From b639e688a9d28d9a66ffe71ef3c382fdd63b1d7a Mon Sep 17 00:00:00 2001 From: slaws Date: Mon, 8 Jun 2009 09:30:48 +0000 Subject: TUSCANY-3081 - Enable the local endpoint registry implementation in the endpoint module. This delays endpoint reference resolution until chains are first created.Callback processing needs a thorough review as part of the next change to make EndpointReference2 serializable. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@782569 13f79535-47bb-0310-9956-ffa450edef68 --- .../DefaultCompositeBuilderExtensionPoint.java | 15 ++++++--- ...onentReferenceEndpointReferenceBuilderImpl.java | 37 +++++++++++++++++++--- .../impl/ComponentServiceEndpointBuilderImpl.java | 8 +++-- 3 files changed, 48 insertions(+), 12 deletions(-) (limited to 'java/sca/modules/assembly') diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java index 80b95189ec..32444349b2 100644 --- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java +++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java @@ -87,7 +87,7 @@ public class DefaultCompositeBuilderExtensionPoint implements CompositeBuilderEx Map attributes = builderDeclaration.getAttributes(); String id = attributes.get("id"); - CompositeBuilder builder = new LazyCompositeBuilder(id, builderDeclaration, this, factories, mapper); + CompositeBuilder builder = new LazyCompositeBuilder(registry, id, builderDeclaration, this, factories, mapper); builders.put(id, builder); } } @@ -98,6 +98,7 @@ public class DefaultCompositeBuilderExtensionPoint implements CompositeBuilderEx */ private static class LazyCompositeBuilder implements CompositeBuilder { + private ExtensionPointRegistry registry; private FactoryExtensionPoint factories; private InterfaceContractMapper mapper; private String id; @@ -105,8 +106,9 @@ public class DefaultCompositeBuilderExtensionPoint implements CompositeBuilderEx private CompositeBuilder builder; private CompositeBuilderExtensionPoint builders; - private LazyCompositeBuilder(String id, ServiceDeclaration factoryDeclaration, + private LazyCompositeBuilder(ExtensionPointRegistry registry, String id, ServiceDeclaration factoryDeclaration, CompositeBuilderExtensionPoint builders, FactoryExtensionPoint factories, InterfaceContractMapper mapper) { + this.registry = registry; this.id = id; this.builderDeclaration = factoryDeclaration; this.builders = builders; @@ -130,8 +132,13 @@ public class DefaultCompositeBuilderExtensionPoint implements CompositeBuilderEx Constructor constructor = builderClass.getConstructor(FactoryExtensionPoint.class, InterfaceContractMapper.class); builder = constructor.newInstance(factories, mapper); } catch (NoSuchMethodException e) { - Constructor constructor = builderClass.getConstructor(CompositeBuilderExtensionPoint.class, FactoryExtensionPoint.class, InterfaceContractMapper.class); - builder = constructor.newInstance(builders, factories, mapper); + try { + Constructor constructor = builderClass.getConstructor(CompositeBuilderExtensionPoint.class, FactoryExtensionPoint.class, InterfaceContractMapper.class); + builder = constructor.newInstance(builders, factories, mapper); + } catch (NoSuchMethodException ex) { + Constructor constructor = builderClass.getConstructor(ExtensionPointRegistry.class); + builder = constructor.newInstance(registry); + } } } catch (Exception e) { throw new IllegalStateException(e); diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java index 52b0f79775..b70597a352 100644 --- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java +++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java @@ -210,7 +210,7 @@ public class ComponentReferenceEndpointReferenceBuilderImpl extends BaseBuilderI } else { // add an unresolved endpoint reference with an unresolved endpoint to go with it EndpointReference2 endpointRef = createEndpointRef( component, reference, true ); - endpointRef.setTargetEndpoint(createEndpoint(true)); + endpointRef.setTargetEndpoint(createEndpoint(targetName)); reference.getEndpointReferences().add(endpointRef); warning(monitor, "ComponentReferenceTargetNotFound", composite, @@ -342,10 +342,11 @@ public class ComponentReferenceEndpointReferenceBuilderImpl extends BaseBuilderI } // end if } // end if // (Debug) For the moment, print out the results - System.out.println( "Created endpointRef. Component = " + component.getName() + " Reference = " + - reference.getName() + " LeafComponent = " + endRef.getComponent().getName() + " LeafReference = " + - endRef.getReference().getName() + " Binding = " + endRef.getBinding() + " target Component = " + - endpoint.getComponent() + " target Service = " + endpoint.getService() ); + // disable for the time being - SL + //System.out.println( "Created endpointRef. Component = " + component.getName() + " Reference = " + + // reference.getName() + " LeafComponent = " + endRef.getComponent().getName() + " LeafReference = " + + // endRef.getReference().getName() + " Binding = " + endRef.getBinding() + " target Component = " + + // endpoint.getComponent() + " target Service = " + endpoint.getService() ); } // end for } // end for @@ -859,4 +860,30 @@ public class ComponentReferenceEndpointReferenceBuilderImpl extends BaseBuilderI return endpoint; } // end method createEndpoint + /** + * Helper method to create an Endpoint + * @param unresolved + * @return the endpoint + */ + private Endpoint2 createEndpoint(String targetName) { + String componentName; + String serviceName; + int i = targetName.lastIndexOf('/'); + if (i != -1) { + componentName = targetName.substring(0, i); + serviceName = targetName.substring(i + 1); + + } else { + componentName = targetName; + serviceName = null; + } + + Endpoint2 endpoint = assemblyFactory.createEndpoint(); + endpoint.setUnresolved(true); + endpoint.setComponentName(componentName); + endpoint.setServiceName(serviceName); + return endpoint; + } // end method createEndpoint + + } // end class diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java index 0e75dab000..e5e97a7190 100644 --- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java +++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceEndpointBuilderImpl.java @@ -144,9 +144,11 @@ public class ComponentServiceEndpointBuilderImpl implements CompositeBuilder { leafService.getEndpoints().add(endpoint); } // end if } // end if - System.out.println( "Endpoint created for Component = " + component.getName() + " Leaf component = " + - endpoint.getComponent().getName() + " service = " + - endpoint.getService().getName() + " binding = " + endpoint.getBinding() ); + // 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 -- cgit v1.2.3