diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:22:51 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-11 23:22:51 +0000 |
commit | 997e88d7d6c8b405190be42a79a803157a2da895 (patch) | |
tree | c6692c12c341df266409277ed88b8e6f37950deb /tags/java/sca/2.0-M3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java | |
parent | 1b427d78b9eebeec97c7cd1dc060ef99e12d6861 (diff) |
Moving 2.x tags
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835151 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'tags/java/sca/2.0-M3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java')
-rw-r--r-- | tags/java/sca/2.0-M3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/tags/java/sca/2.0-M3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java b/tags/java/sca/2.0-M3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java deleted file mode 100644 index 00674b1f27..0000000000 --- a/tags/java/sca/2.0-M3/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java +++ /dev/null @@ -1,267 +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.assembly.builder.impl; - -import java.util.List; -import java.util.Vector; - -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.ComponentService; -import org.apache.tuscany.sca.assembly.Composite; -import org.apache.tuscany.sca.assembly.CompositeService; -import org.apache.tuscany.sca.assembly.Endpoint; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.assembly.Implementation; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.assembly.builder.CompositeBuilder; -import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException; -import org.apache.tuscany.sca.definitions.Definitions; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicySet; - -/** - * A composite builder that creates endpoint models for component services. - * - * @version $Rev$ $Date$ - */ -public class ComponentServiceEndpointBuilderImpl implements CompositeBuilder { - private AssemblyFactory assemblyFactory; - - // Testing - //boolean useNew = true; - boolean useNew = false; - - public ComponentServiceEndpointBuilderImpl(AssemblyFactory assemblyFactory) { - this.assemblyFactory = assemblyFactory; - } - - public String getID() { - return "org.apache.tuscany.sca.assembly.builder.ComponentReferenceEndpointReferenceBuilder"; - } - - /** - * Create endpoint models for all component services. - * - * @param composite - the top-level composite to build the models for - * @param definitions - * @param monitor - a Monitor for logging errors - */ - public void build(Composite composite, Definitions definitions, Monitor monitor) throws CompositeBuilderException { - - // process component services - if( !useNew ) { - processComponentServices(composite); - } // end if - processComponentServices2( composite ); - - } // end method build - - private void processComponentServices(Composite composite) { - - for (Component component : composite.getComponents()) { - - // recurse for composite implementations - Implementation implementation = component.getImplementation(); - if (implementation instanceof Composite) { - processComponentServices((Composite)implementation); - } - - // create an endpoint for each component service binding - for (ComponentService service : component.getServices()) { - - Component endpointComponent = component; - ComponentService endpointService = service; - - // TODO - EPR - We maintain all endpoints at the right level now - // but endpoints for promoting services must point down - // to the services they promote. - if (service.getService() instanceof CompositeService) { - CompositeService compositeService = (CompositeService)service.getService(); - endpointService = ServiceConfigurationUtil.getPromotedComponentService(compositeService); - endpointComponent = ServiceConfigurationUtil.getPromotedComponent(compositeService); - } // end if - - for (Binding binding : service.getBindings()){ - Endpoint endpoint = assemblyFactory.createEndpoint(); - endpoint.setComponent(endpointComponent); - endpoint.setService(endpointService); - endpoint.setBinding(binding); - endpoint.setUnresolved(false); - service.getEndpoints().add(endpoint); - } // end for - } - } - } // end method processComponentServices - - /** - * @param composite - the composite which contains the component services - */ - private void processComponentServices2(Composite composite) { - for( Component component : composite.getComponents() ) { - for( ComponentService service : component.getServices() ) { - EndpointInfo theInfo = scanComponentService( component, service, null ); - - List<Binding> theBindings = theInfo.getBindings(); - // Create an endpoint for each binding which applies to this service - // and copy across the information relating to the endpoint. - for( Binding binding : theBindings ) { - Endpoint endpoint = assemblyFactory.createEndpoint(); - endpoint.setComponent(theInfo.getComponent()); - endpoint.setService(theInfo.getComponentService()); - endpoint.setBinding(binding); - endpoint.setInterfaceContract(theInfo.getInterfaceContract()); - endpoint.getRequiredIntents().addAll(theInfo.getIntents()); - endpoint.getPolicySets().addAll(theInfo.getPolicySets()); - endpoint.setUnresolved(false); - // Add the endpoint to the component service - if( useNew ) { - // Add to top level and leaf level services, if different - service.getEndpoints().add(endpoint); - ComponentService leafService = theInfo.getComponentService(); - if( service != leafService ) { - leafService.getEndpoints().add(endpoint); - } // end if - } // end if - // debug - // disabled for the time being - SL - //System.out.println( "Endpoint created for Component = " + component.getName() + " Leaf component = " + - // endpoint.getComponent().getName() + " service = " + - // endpoint.getService().getName() + " binding = " + endpoint.getBinding() ); - } // end for - } // end for - // Handle composites as implementations - if( component.getImplementation() instanceof Composite ) { - processComponentServices2( (Composite) component.getImplementation() ); - } // end if - } // end for - } // end method processComponentServices2 - - /** - * Scan a component service for endpoint information, recursing down to the leafmost promoted service if the component service is - * implemented by a Composite service - * @param component - the component - * @param service - the component service - * @param theInfo - an EndpointInfo object in which the endpoint information is accumulated. If null on entry, a new EndpointInfo object is created - * @return - the EndpointInfo object containing the information about the component service - */ - private EndpointInfo scanComponentService( Component component, ComponentService service, EndpointInfo theInfo ) { - if( theInfo == null ) { - theInfo = new EndpointInfo(); - } // end if - - theInfo.setBindings(service.getBindings()); - theInfo.setInterfaceContract(service.getInterfaceContract()); - theInfo.setIntents(service.getRequiredIntents()); - theInfo.setPolicySets(service.getPolicySets()); - - Service implService = service.getService(); - if( implService instanceof CompositeService ) { - // If it is implemented by a Composite, scan through the promoted service - ComponentService promotedService = ((CompositeService)implService).getPromotedService(); - Component promotedComponent = ((CompositeService)implService).getPromotedComponent(); - if (promotedService != null) { - scanComponentService( promotedComponent, promotedService, theInfo ); - } else { - // If its a composite service with no promoted component service, it's an error - } // end if - } else { - // Otherwise the component and service are the ones at this level - theInfo.setComponent(component); - theInfo.setComponentService(service); - } //end if - - return theInfo; - } // end method scanPromotedComponentService - - private class EndpointInfo { - private Component leafComponent = null; - private ComponentService leafComponentService = null; - private List<Binding> bindings = null; - private InterfaceContract contract; - private List<Intent> intents = new Vector<Intent>(); - private List<PolicySet> policySets = null; - - void setComponent( Component component ){ - leafComponent = component; - } // end method - - Component getComponent() { - return leafComponent; - } // end method - - void setComponentService( ComponentService service ) { - leafComponentService = service; - } // end method - - ComponentService getComponentService() { - return leafComponentService; - } // end method - - void setBindings( List<Binding> theBindings ) { - // RULE: Bindings from higher in the hierarchy take precedence - if( bindings == null ) { - bindings = theBindings; - } // end if - } // end method - - List<Binding> getBindings() { - return bindings; - } // end method - - void setInterfaceContract( InterfaceContract theInterface ) { - // RULE: Interface contract from higher in the hierarchy takes precedence - if( contract == null ) { - contract = theInterface; - } // end if - } // end method - - InterfaceContract getInterfaceContract() { - return contract; - } // end method - - List<Intent> getIntents() { - return intents; - } // end method - - void setIntents(List<Intent> intents) { - // RULE: Intents accumulate from all levels in the hierarchy - this.intents.addAll( intents ); - } // end method - - List<PolicySet> getPolicySets() { - return policySets; - } // end method - - void setPolicySets(List<PolicySet> policySets) { - // RULE: Policy Sets from higher in the hierarchy override those lower - if( this.policySets == null ) { - this.policySets = policySets; - } // end if - } // end method - - - } // end class EndpointInfo - -} // end class |