summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.2/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainProxyImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-java-1.2/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainProxyImpl.java')
-rw-r--r--branches/sca-java-1.2/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainProxyImpl.java622
1 files changed, 0 insertions, 622 deletions
diff --git a/branches/sca-java-1.2/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainProxyImpl.java b/branches/sca-java-1.2/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainProxyImpl.java
deleted file mode 100644
index dcfd186515..0000000000
--- a/branches/sca-java-1.2/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainProxyImpl.java
+++ /dev/null
@@ -1,622 +0,0 @@
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.node.impl;
-
-import java.io.ByteArrayOutputStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.URI;
-import java.net.URL;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Binding;
-import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.ComponentReference;
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.xml.Constants;
-import org.apache.tuscany.sca.contribution.Artifact;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.assembly.ActivationException;
-import org.apache.tuscany.sca.core.context.CallableReferenceImpl;
-import org.apache.tuscany.sca.domain.DomainException;
-import org.apache.tuscany.sca.domain.SCADomainAPIService;
-import org.apache.tuscany.sca.domain.SCADomainEventService;
-import org.apache.tuscany.sca.domain.impl.SCADomainImpl;
-import org.apache.tuscany.sca.domain.impl.SCADummyNodeImpl;
-import org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntime;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
-import org.apache.tuscany.sca.node.NodeFactoryImpl;
-import org.apache.tuscany.sca.node.SCANode;
-import org.apache.tuscany.sca.node.SCANodeSPI;
-import org.apache.tuscany.sca.node.management.SCANodeManagerInitService;
-import org.apache.tuscany.sca.node.management.SCANodeManagerService;
-import org.apache.tuscany.sca.node.util.SCAContributionUtil;
-import org.osoa.sca.CallableReference;
-import org.osoa.sca.ServiceReference;
-
-
-/**
- * A local representation of the sca domain running on a single node
- *
- * @version $Rev$ $Date$
- */
-public class SCADomainProxyImpl extends SCADomainImpl {
-
- private final static Logger logger = Logger.getLogger(SCADomainProxyImpl.class.getName());
-
- // management services
- private SCADomainAPIService domainAPIService;
- private SCADomainEventService domainEventService;
- private SCANodeManagerInitService nodeManagerInitService;
- private CallableReferenceImpl<SCANodeManagerService> nodeManagerService;
-
- // the local node implementation
- private SCANode node;
-
- // methods defined on the implementation only
-
- /**
- * Creates a domain proxy connected to a wider domain.
- *
- * @param domainUri - identifies what host and port the domain service is running on, e.g. http://localhost:8081
- * @throws ActivationException
- */
- public SCADomainProxyImpl(String domainURI) throws DomainException {
- super(domainURI);
- }
-
- /**
- * Creates a domain proxy connected to a wider domain.
- *
- * @param domainUri - identifies what host and port the domain service is running on, e.g. http://localhost:8081
- * @throws ActivationException
- */
- public SCADomainProxyImpl(String domainURI, ClassLoader cl) throws DomainException {
- super(domainURI);
- domainClassLoader = cl;
- }
-
- /**
- * Start the composite that connects to the domain manager
- */
- protected void init() throws DomainException {
- try {
- // check where domain uris are urls, they will be used to configure various
- // endpoints if they are
- URI tmpURI;
- try {
- tmpURI = new URI(domainModel.getDomainURI());
- domainModel.setDomainURL(tmpURI.toURL().toExternalForm());
- } catch(Exception ex) {
- domainModel.setDomainURL(null);
- }
-
- // Check if node has been given a valid domain name to connect to
- if (domainModel.getDomainURL() == null) {
- logger.log(Level.INFO, "Domain will be started stand-alone as domain URL is not provided");
- }
-
- } catch(Exception ex) {
- throw new DomainException(ex);
- }
- }
-
- private void createRuntime() throws DomainException {
- try {
- // check we don't try to do this twice
- if (domainManagementRuntime != null){
- return;
- }
-
- // if there is no node create a runtime otherwise use the runtime from the node
- if ((node == null) ||
- ( (node != null) && (node.getClass().equals(SCADummyNodeImpl.class)))){
- // create a runtime for the domain management services to run on
- domainManagementRuntime = new ReallySmallRuntime(domainClassLoader);
- domainManagementRuntime.start();
-
- String path = URI.create(domainModel.getDomainURI()).getPath();
-
- // invent a default URL for the runtime
- String host = InetAddress.getLocalHost().getHostName();
- ServerSocket socket = new ServerSocket(0);
- int port = socket.getLocalPort();
- socket.close();
-
- ServletHostExtensionPoint servletHosts = domainManagementRuntime.getExtensionPointRegistry().getExtensionPoint(ServletHostExtensionPoint.class);
- for (ServletHost servletHost: servletHosts.getServletHosts()) {
- servletHost.setDefaultPort(port);
- if (path != null && path.length() > 0 && !path.equals("/")) {
- servletHost.setContextPath(path);
- }
- }
-
- // make the node available to the model
- // this causes the runtime to start registering binding-sca service endpoints
- // with the domain proxy
- // TODO - This code is due to be pulled out and combined with the register and
- // resolution code that appears in this class
- ModelFactoryExtensionPoint factories = domainManagementRuntime.getExtensionPointRegistry().getExtensionPoint(ModelFactoryExtensionPoint.class);
- nodeFactory = new NodeFactoryImpl(node);
- factories.addFactory(nodeFactory);
-
- // Create an in-memory domain level management composite
- AssemblyFactory assemblyFactory = domainManagementRuntime.getAssemblyFactory();
- domainManagementComposite = assemblyFactory.createComposite();
- domainManagementComposite.setName(new QName(Constants.SCA10_NS, "domainManagement"));
- domainManagementComposite.setURI(domainModel.getDomainURI() + "/Management");
-
-
- } else {
- domainManagementRuntime = (ReallySmallRuntime)((SCANodeSPI)node).getNodeRuntime();
- domainManagementComposite = domainManagementRuntime.getCompositeActivator().getDomainComposite();
-
- // set the context path for the node
- String path = URI.create(node.getURI()).getPath();
- if (path != null && path.length() > 0 && !path.equals("/")) {
- ServletHostExtensionPoint servletHosts = domainManagementRuntime.getExtensionPointRegistry().getExtensionPoint(ServletHostExtensionPoint.class);
- for (ServletHost servletHost: servletHosts.getServletHosts()) {
- servletHost.setContextPath(path);
- }
- }
- }
-
- // Find the composite that will configure the domain
- String domainCompositeName = "node.composite";
- URL contributionURL = SCAContributionUtil.findContributionFromResource(domainClassLoader, domainCompositeName);
-
- if ( contributionURL != null ){
- logger.log(Level.INFO, "Domain management configured from " + contributionURL);
-
- // add node composite to the management domain
- domainManagementContributionService = domainManagementRuntime.getContributionService();
- domainManagementContribution = domainManagementContributionService.contribute("nodedomain",
- contributionURL,
- false);
-
- Composite composite = null;
-
- for (Artifact artifact: domainManagementContribution.getArtifacts()) {
- if (domainCompositeName.equals(artifact.getURI())) {
- composite = (Composite)artifact.getModel();
- }
- }
-
- if (composite != null) {
-
- domainManagementComposite.getIncludes().add(composite);
- domainManagementRuntime.buildComposite(composite);
-
- if (domainModel.getDomainURL() != null) {
- URI domainURI = URI.create(domainModel.getDomainURI());
- String domainHost = domainURI.getHost();
- int domainPort = domainURI.getPort();
-
- // override any domain URLs in node.composite and replace with the
- // domain url provided on start up
- for ( Component component : composite.getComponents()){
- for (ComponentReference reference : component.getReferences() ){
- for (Binding binding : reference.getBindings() ) {
- String bindingURIString = binding.getURI();
- if (bindingURIString != null) {
- URI bindingURI = URI.create(bindingURIString);
- String bindingHost = bindingURI.getHost();
- int bindingPort = bindingURI.getPort();
-
- if ( bindingPort == 9999){
- // replace the old with the new
- bindingURIString = domainURI + bindingURI.getPath() ;
-
- // set the address back into the NodeManager binding.
- binding.setURI(bindingURIString);
- }
- }
- }
- }
- }
- }
-
- domainManagementRuntime.getCompositeActivator().activate(composite);
- domainManagementRuntime.getCompositeActivator().start(composite);
-
- // get the management components out of the domain so that they
- // can be configured/used.
- domainAPIService = getService(SCADomainAPIService.class,
- "SCADomainAPIServiceProxyComponent",
- domainManagementRuntime,
- domainManagementComposite);
- domainEventService = getService(SCADomainEventService.class,
- "SCADomainEventServiceProxyComponent",
- domainManagementRuntime,
- domainManagementComposite);
-
- nodeManagerInitService = getService(SCANodeManagerInitService.class,
- "SCANodeManagerComponent/SCANodeManagerInitService",
- domainManagementRuntime,
- domainManagementComposite);
-
- nodeManagerService = (CallableReferenceImpl<SCANodeManagerService>)
- getServiceReference(SCANodeManagerService.class,
- "SCANodeManagerComponent/SCANodeManagerService",
- domainManagementRuntime,
- domainManagementComposite);
-
- // add the registered node now that the runtime is started
- if ((node != null) && (!node.getClass().equals(SCADummyNodeImpl.class))){
- addNode();
- }
-
-
- } else {
- throw new ActivationException("Domain management contribution " +
- contributionURL +
- " found but could not be loaded");
- }
- } else {
- throw new ActivationException("Domain management contribution " +
- domainCompositeName +
- " not found on the classpath");
- }
-
- } catch(Exception ex) {
- throw new DomainException(ex);
- }
- }
-
-
- public String getComposite(QName compositeQName){
-
- Composite composite = null;
- for(Composite tmpComposite : domainManagementComposite.getIncludes()){
- if (tmpComposite.getName().equals(compositeQName)){
- composite = tmpComposite;
- }
- }
-
- String compositeString = null;
-
- if (composite != null){
- ExtensionPointRegistry registry = domainManagementRuntime.getExtensionPointRegistry();
-
- StAXArtifactProcessorExtensionPoint staxProcessors =
- registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
-
- StAXArtifactProcessor<Composite> processor = staxProcessors.getProcessor(Composite.class);
-
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
- XMLStreamWriter writer = outputFactory.createXMLStreamWriter(bos);
- processor.write(composite, writer);
- writer.flush();
- writer.close();
- } catch (Exception ex) {
- System.out.println(ex.toString());
- }
-
- compositeString = bos.toString();
- }
-
- return compositeString;
- }
-
- // SCADomainEventService methods
-
- public void addNode(SCANode node) throws DomainException {
- this.node = node;
-
- // add the node into the local domain model
- super.registerNode(node.getURI(), node.getURI(), null);
-
- // the registration of the node with the domain is delayed until
- // after the runtime has been started
- createRuntime();
- }
-
- private void addNode() throws DomainException {
-
- // pass this object into the node manager service
- nodeManagerInitService.setNode(node);
-
- if (domainModel.getDomainURL() != null){
- // add the node to the domain
-
- try {
- // create the node manager endpoint
- // TODO - we really need to pass in a callable reference
- URI nodeURI = new URI(node.getURI());
- String nodeHost = nodeURI.getHost();
-
- if (nodeHost.equals("localhost")){
- nodeHost = InetAddress.getLocalHost().getHostName();
- }
-
- String nodeManagerURL = nodeURI.getScheme()+ "://" +
- nodeHost + ":" +
- nodeURI.getPort() + nodeURI.getPath() + "/SCANodeManagerComponent/SCANodeManagerService";
-
- // go out and add this node to the wider domain
- domainEventService.registerNode(node.getURI(), nodeManagerURL, nodeManagerService);
-
- } catch(Exception ex) {
- logger.log(Level.SEVERE,
- "Can't connect to domain manager at: " +
- domainModel.getDomainURL());
- throw new DomainException(ex);
- }
- }
- }
-
- public void removeNode(SCANode node) throws DomainException {
-
- // remove the node from the local domain model
- super.unregisterNode(node.getURI());
-
- if (domainModel.getDomainURL() != null){
-
- try {
- // go out and remove this node to the wider domain
- domainEventService.unregisterNode(node.getURI());
- } catch(Exception ex) {
- logger.log(Level.SEVERE,
- "Can't connect to domain manager at: " +
- domainModel.getDomainURL());
- throw new DomainException(ex);
- }
- }
-
- // remove this object from the node manager service
- nodeManagerInitService.setNode(null);
-
- this.node = null;
- }
-
- public void registerNodeStart(String nodeURI) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainEventService != null)){
- domainEventService.registerNodeStart(nodeURI);
- }
- }
-
- public void registerNodeStop(String nodeURI) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainEventService != null)){
- domainEventService.registerNodeStop(nodeURI);
- }
- }
-
- public void registerContribution(String nodeURI, String contributionURI, String contributionURL) throws DomainException {
-
- if ((domainModel.getDomainURL() != null) && (domainEventService != null)){
- domainEventService.registerContribution(nodeURI, contributionURI, contributionURL);
- }
- }
-
- public void unregisterContribution(String nodeURI, String contributionURI) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainEventService != null)) {
- domainEventService.unregisterContribution(nodeURI, contributionURI);
- }
- }
-
- public void registerDomainLevelComposite(String nodeURI, String compositeQNameString) throws DomainException{
- if ((domainModel.getDomainURL() != null) && (domainEventService != null)) {
- domainEventService.registerDomainLevelComposite(nodeURI, compositeQNameString);
- }
- }
-
-
- public void registerServiceEndpoint(String domainURI, String nodeURI, String serviceName, String bindingName, String URL) throws DomainException {
-
- //super.registerServiceEndpoint(domainURI, nodeURI, serviceName, bindingName, URL);
-
- if ((domainModel.getDomainURL() != null) && (domainEventService != null)) {
- domainEventService.registerServiceEndpoint(domainURI, nodeURI, serviceName, bindingName, URL);
- }
- }
-
- public void unregisterServiceEndpoint(String domainURI, String nodeURI, String serviceName, String bindingName) throws DomainException {
-
- //super.unregisterServiceEndpoint(domainURI, nodeURI, serviceName, bindingName);
-
- if ((domainModel.getDomainURL() != null) && (domainEventService != null)) {
- domainEventService.unregisterServiceEndpoint(domainURI, nodeURI, serviceName, bindingName);
- }
- }
-
- public String findServiceEndpoint(String domainURI, String serviceName, String bindingName) throws DomainException {
-
- String endpoint = super.findServiceEndpoint(domainURI, serviceName, bindingName);
-
- if ( (endpoint.equals(SERVICE_NOT_REGISTERED)) && (domainModel.getDomainURL() != null) && (domainEventService != null)){
- endpoint = domainEventService.findServiceEndpoint(domainURI, serviceName, bindingName);
- }
-
- return endpoint;
- }
-
- public String findServiceNode(String domainURI, String serviceName, String bindingName) throws DomainException {
-
- String nodeName = super.findServiceEndpoint(domainURI, serviceName, bindingName);
-
- if ( (nodeName.equals(SERVICE_NOT_KNOWN)) && (domainModel.getDomainURL() != null) && (domainEventService != null)){
- nodeName = domainEventService.findServiceNode(domainURI, serviceName, bindingName);
- }
-
- return nodeName;
- }
-
-
- // SCADomain API methods
- public void start() throws DomainException {
-
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.start();
- } else {
- logger.log(Level.INFO,"Not connected to domain");
- }
- }
-
- public void stop() throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.stop();
- } else {
- logger.log(Level.INFO,"Not connected to domain");
- }
- }
-
- public void destroy() throws DomainException {
-
- try {
-
-
- if (domainManagementRuntime != null) {
- Composite composite = domainManagementComposite.getIncludes().get(0);
-
- domainManagementRuntime.getCompositeActivator().stop(composite);
- domainManagementRuntime.getCompositeActivator().deactivate(composite);
-
- domainManagementComposite.getIncludes().clear();
- domainManagementRuntime.getContributionService().remove(domainManagementContribution.getURI());
-
- domainManagementRuntime.stop();
-
- domainManagementRuntime = null;
- domainManagementComposite = null;
-
- domainAPIService = null;
- domainEventService = null;
- nodeManagerInitService = null;
- }
-
-
- } catch (Exception ex) {
- throw new DomainException(ex);
- }
- }
-
-
- public void addContribution(String contributionURI, URL contributionURL) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.addContribution(contributionURI, contributionURL.toString());
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public void updateContribution(String contributionURI, URL contributionURL) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.updateContribution(contributionURI, contributionURL.toString());
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public void removeContribution(String contributionURI) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.removeContribution(contributionURI);
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public void addDeploymentComposite(String contributionURI, String compositeXML) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.addDeploymentComposite(contributionURI, compositeXML);
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public void updateDeploymentComposite(String contributionURI, String compositeXML) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.updateDeploymentComposite(contributionURI, compositeXML);
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public void addToDomainLevelComposite(QName compositeQName) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.addToDomainLevelComposite(compositeQName.toString());
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public void removeFromDomainLevelComposite(QName compositeQName) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.removeFromDomainLevelComposite(compositeQName.toString());
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public String getDomainLevelComposite() throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- return domainAPIService.getDomainLevelComposite();
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public String getQNameDefinition(QName artifact) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- return domainAPIService.getQNameDefinition(artifact.toString());
- } else {
- throw new DomainException("Not connected to domain");
- }
- }
-
- public void startComposite(QName compositeQName) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.startComposite(compositeQName.toString());
- } else {
- logger.log(Level.INFO,"Not connected to domain");
- }
- }
-
- public void stopComposite(QName compositeQName) throws DomainException {
- if ((domainModel.getDomainURL() != null) && (domainAPIService != null)){
- domainAPIService.stopComposite(compositeQName.toString());
- } else {
- logger.log(Level.INFO,"Not connected to domain");
- }
- }
-
- public <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException {
- return (R)cast(target, domainManagementRuntime);
- }
-
- public <B> B getService(Class<B> businessInterface, String serviceName) {
- return getService( businessInterface, serviceName, domainManagementRuntime, domainManagementComposite);
- }
-
- public <B> ServiceReference<B> getServiceReference(Class<B> businessInterface, String name) {
- return getServiceReference(businessInterface, name, domainManagementRuntime, domainManagementComposite);
- }
-}