/*
* Copyright (c) Rogue Wave Software, Inc. 1997-2016
* Licensed Materials - All Rights Reserved.
*/
/*
* By default this example is accessing all the resources locally
* (localhost). In this case, the two iframes will reference the
* same Diagrammer JSF component (same session).
*
* NOTE: How to simulate complete client isolation.
* One way of simulating component isolation using one single servlet
* container is as follows:
*
* 1. Update your 'hosts' file to include 'fake' domains
* Check "http://en.wikipedia.org/wiki/Hosts_file" for details on where
* to locate the 'hosts' file on your platform.
* Append the following entries to the file:
* 127.0.0.1 mainApp.domain0.com
* 127.0.0.1 client1.domain1.com
* 127.0.0.1 client2.domain2.com
*
* 2. Modify this file (managedhub.js) and update the appropriate
* locations in order to set the variables 'subdomain1' and 'subdomain2'
* accordingly:
* var subdomain1 = "client1.domain1.com:8080";
* var subdomain2 = "client2.domain2.com:8080";
*
* 3. Launch the Tomcat servlet container and ensure that the domain
* redirection is working properly by opening the following URIs:
* http://client1.domain1.com/faces/diagrammer.jsp
* http://client2.domain2.com/faces/diagrammer.jsp
*
* 4. Open the application using the following URI:
* http://mainApp.domain0.com/managedhub.html
*
* To the browser, client1.domain1.com and client2.domain2.com are two
* distinct servers. OpenAjax IframeContainer is transparently tunneling
* the communication between iframes.
*/
/*
* ManagerHub Security Callbacks
*/
function onMHPublish(topic, data, publishContainer, subscribeContainer) {
/* Callback for publish requests. This example approves all publish requests. */
return true;
}
function onMHSubscribe(topic, container) {
/* Callback for subscribe requests. This example approves all subscribe requests. */
return true;
}
function onMHUnsubscribe(topic, container) {
/* Callback for unsubscribe requests. This example approves all subscribe requests. */
return true;
}
function onMHSecurityAlert(source, alertType) {
/* Callback for security alerts */
}
/*
* Application initializes in response to document load event
*/
function loadEventHandler() {
var mashupArea = document.getElementById("mashupArea");
/*
* Create a ManagedHub instance
*/
var managedHub = new OpenAjax.hub.ManagedHub(
{
onPublish: onMHPublish,
onSubscribe: onMHSubscribe,
onUnsubscribe: onMHUnsubscribe,
onSecurityAlert: onMHSecurityAlert
}
);
/*
* Create IframeContainer for 'client1'
*
* NOTE: In order to completely isolate the IframeContainer ('client1')
* from the manager and from all other client applications, the 'uri'
* parameter of the 'container1' must have a different subdomain from
* the main application and any other clients.
* For simplicity, this example is initially setting the main and client
* applications URI to the same server 'localhost' (window.location.host)
* See note at the top of this file.
*/
createIframeContainer(window.location.host, 'client1', managedHub);
/*
* Create IframeContainer for 'client2'
*
* NOTE: In order to completely isolate the IframeContainer ('client2')
* from the manager and from all other client applications, the 'uri'
* parameter of the 'container2' must have a different subdomain from
* the main application and any other clients.
* For simplicity, this example is initially setting the main and client
* applications URI to the same server 'localhost' (window.location.host)
* See note at the top of this file.
*/
createIframeContainer(window.location.host, 'client2', managedHub);
}
/*
* Function to create an IframeContainer for a client.
*
* Parameter 'subdomain' : identifies a remote servlet container
* Parameter 'name' : identifies the IframeContainer
* Parameter 'managedHub': the managed hub where the container is created
*/
function createIframeContainer(subdomain, name, managedHub) {
var mashupArea = document.getElementById("mashupArea");
var div = document.createElement( "div" );
mashupArea.appendChild(div);
/*
* ClientHub Security Callbacks
*/
function onClientSecurityAlert(source, alertType) {
/* Handle client-side security alerts */
}
function onClientConnect(container) {
/* Called when client connects */
}
function onClientDisconnect(container) {
/* Called when client disconnects */
}
/*
* Compute the URI for the iframe tunnel, required by the
* IframeContainer to handle same origin policy restrictions.
*
* The tunnel URI must be from the same origin as the page
* which instantiates the IframeContainer.
*/
var hostURI = "http://"
+ window.location.host + "/"
+ window.location.pathname.split("/")[1];
var container = new OpenAjax.hub.IframeContainer(managedHub, name,
{
Container: {
onSecurityAlert: onClientSecurityAlert,
onConnect: onClientConnect,
onDisconnect: onClientDisconnect
},
IframeContainer: {
// DOM element that is parent of this container:
parent: div,
// Container's iframe will have these CSS styles:
iframeAttrs: { style: { border:"black solid 1px", width:"100%", height:"480px" }},
// Container's iframe loads the following URL:
uri: "http://" + subdomain + "/jsf-diagrammer-oah/faces/" + name + ".jsp",
// Tunnel URL required by IframeHubClient. This particular tunnel URL
// is the one that corresponds to release/all/OpenAjaxManagedHub-all.js:
tunnelURI: hostURI + "/data/openajax/all/tunnel.html"
}
}
);
}