summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/EndpointReferenceBuilder.java13
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java72
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java2
-rw-r--r--java/sca/modules/endpoint/src/main/java/org/apache/tuscany/sca/endpoint/impl/EndpointReferenceBuilderImpl.java388
-rw-r--r--java/sca/modules/endpoint/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.CompositeBuilder18
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java10
6 files changed, 159 insertions, 344 deletions
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/EndpointReferenceBuilder.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/EndpointReferenceBuilder.java
index 560672d8e4..1954e82168 100644
--- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/EndpointReferenceBuilder.java
+++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/EndpointReferenceBuilder.java
@@ -19,8 +19,8 @@
package org.apache.tuscany.sca.assembly.builder;
+import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.EndpointReference;
-import org.apache.tuscany.sca.monitor.Monitor;
/**
* A builder that handles the configuration of endpoint references
@@ -30,6 +30,15 @@ import org.apache.tuscany.sca.monitor.Monitor;
* @version $Rev$ $Date$
*/
public interface EndpointReferenceBuilder {
+
+ /**
+ * Build an endpoint reference matching reference bindings
+ * with service bindings.
+ *
+ * @param endpointReference
+ * @param monitor
+ */
+ void buildtimeBuild(Composite composite);
/**
* Build an endpoint reference matching reference bindings
@@ -38,6 +47,6 @@ public interface EndpointReferenceBuilder {
* @param endpointReference
* @param monitor
*/
- void build(EndpointReference endpointReference, Monitor monitor);
+ void runtimeBuild(EndpointReference endpointReference);
}
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java
index d165f7fba2..5fa3e679a0 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/RuntimeWireImpl.java
@@ -34,6 +34,7 @@ import org.apache.tuscany.sca.assembly.CompositeService;
import org.apache.tuscany.sca.assembly.Contract;
import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.assembly.Service;
import org.apache.tuscany.sca.assembly.builder.EndpointReferenceBuilder;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
@@ -328,7 +329,7 @@ public class RuntimeWireImpl implements RuntimeWire {
* is first used
*/
private void resolveEndpointReference(){
- endpointReferenceBuilder.build(endpointReference, null);
+ endpointReferenceBuilder.runtimeBuild(endpointReference);
// set the endpoint based on the resolved endpoint
endpoint = endpointReference.getTargetEndpoint();
@@ -631,12 +632,24 @@ public class RuntimeWireImpl implements RuntimeWire {
ComponentService service,
InvocationChain chain,
Operation operation) {
+
+
+
+ if (service.getService() instanceof CompositeService){
+ CompositeService compositeService = (CompositeService)service.getService();
+ component = getPromotedComponent(compositeService);
+ service = getPromotedComponentService(compositeService);
+ }
+
ImplementationProvider provider = ((RuntimeComponent)component).getImplementationProvider();
- if (provider != null) {
+
+ if (provider != null) {
Invoker invoker = null;
invoker = provider.createInvoker((RuntimeComponentService)service, operation);
chain.addInvoker(invoker);
}
+ // TODO - EPR - don't we need to get the policy from the right level in the
+ // model rather than the leafmost level
List<PolicyProvider> pps = ((RuntimeComponent)component).getPolicyProviders();
if (pps != null) {
for (PolicyProvider p : pps) {
@@ -696,4 +709,59 @@ public class RuntimeWireImpl implements RuntimeWire {
public ExtensionPointRegistry getExtensionPoints() {
return extensionPoints;
}
+
+ /**
+ * Follow a service promotion chain down to the inner most (non composite)
+ * component service.
+ *
+ * @param topCompositeService
+ * @return
+ */
+ private ComponentService getPromotedComponentService(CompositeService compositeService) {
+ ComponentService componentService = compositeService.getPromotedService();
+ if (componentService != null) {
+ Service service = componentService.getService();
+ if (componentService.getName() != null && service instanceof CompositeService) {
+
+ // Continue to follow the service promotion chain
+ return getPromotedComponentService((CompositeService)service);
+
+ } else {
+
+ // Found a non-composite service
+ return componentService;
+ }
+ } else {
+
+ // No promoted service
+ return null;
+ }
+ }
+
+ /**
+ * Follow a service promotion chain down to the innermost (non-composite) component.
+ *
+ * @param compositeService
+ * @return
+ */
+ private Component getPromotedComponent(CompositeService compositeService) {
+ ComponentService componentService = compositeService.getPromotedService();
+ if (componentService != null) {
+ Service service = componentService.getService();
+ if (componentService.getName() != null && service instanceof CompositeService) {
+
+ // Continue to follow the service promotion chain
+ return getPromotedComponent((CompositeService)service);
+
+ } else {
+
+ // Found a non-composite service
+ return compositeService.getPromotedComponent();
+ }
+ } else {
+
+ // No promoted service
+ return null;
+ }
+ }
}
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
index 02bab99cb1..7ad4db79dc 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
@@ -361,7 +361,7 @@ public class ComponentContextImpl implements ComponentContextExt {
componentReference.getEndpointReferences().add(endpointReference);
// do binding matching
- endpointReferenceBuilder.build(endpointReference, monitor);
+ endpointReferenceBuilder.runtimeBuild(endpointReference);
return componentReference;
}
diff --git a/java/sca/modules/endpoint/src/main/java/org/apache/tuscany/sca/endpoint/impl/EndpointReferenceBuilderImpl.java b/java/sca/modules/endpoint/src/main/java/org/apache/tuscany/sca/endpoint/impl/EndpointReferenceBuilderImpl.java
index 5b3c252880..49b7c4c7b4 100644
--- a/java/sca/modules/endpoint/src/main/java/org/apache/tuscany/sca/endpoint/impl/EndpointReferenceBuilderImpl.java
+++ b/java/sca/modules/endpoint/src/main/java/org/apache/tuscany/sca/endpoint/impl/EndpointReferenceBuilderImpl.java
@@ -54,7 +54,7 @@ import org.oasisopen.sca.SCARuntimeException;
*
* @version $Rev$ $Date$
*/
-public class EndpointReferenceBuilderImpl implements CompositeBuilder, EndpointReferenceBuilder {
+public class EndpointReferenceBuilderImpl implements EndpointReferenceBuilder {
protected ExtensionPointRegistry extensionPoints;
protected AssemblyFactory assemblyFactory;
@@ -73,64 +73,19 @@ public class EndpointReferenceBuilderImpl implements CompositeBuilder, EndpointR
this.endpointRegistry = utils.getUtility(EndpointRegistry.class);
}
-
- public String getID() {
- return "org.apache.tuscany.sca.assembly.builder.EndpointReferenceBuilder";
- }
-
+
/**
- * Report a warning.
- *
- * @param monitor
- * @param problems
- * @param message
- * @param model
- */
- protected void warning(Monitor monitor, String message, Object model, String... messageParameters) {
- if (monitor != null) {
- Problem problem = monitor.createProblem(this.getClass().getName(), "assembly-validation-messages", Severity.WARNING, model, message, (Object[])messageParameters);
- monitor.problem(problem);
- }
- }
-
- /**
- * Report a error.
+ * Build a composite
*
+ * @param endpoint
* @param monitor
- * @param problems
- * @param message
- * @param model
*/
- protected void error(Monitor monitor, String message, Object model, String... messageParameters) {
- if (monitor != null) {
- Problem problem = monitor.createProblem(this.getClass().getName(), "assembly-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters);
- monitor.problem(problem);
- }
- }
-
- /**
- * Report a exception.
- *
- * @param problems
- * @param message
- * @param model
- */
- protected void error(Monitor monitor, String message, Object model, Exception ex) {
- if (monitor != null) {
- Problem problem = null;
- problem = monitor.createProblem(this.getClass().getName(), "assembly-validation-messages", Severity.ERROR, model, message, ex);
- monitor.problem(problem);
- }
- }
-
- /**
- * Build all the endpoint references
- *
- * @param composite
- */
- public void build(Composite composite, Definitions definitions, Monitor monitor) throws CompositeBuilderException
- {
- // Not used now
+ public void buildtimeBuild(Composite composite) {
+ // TODO - ready for reorganization of the builders
+ // build all the endpoint references in a composite
+ // that it is possible to build in order to get any
+ // errors out as early as possible. Any that can't
+ // be built now must wait until runtime
}
/**
@@ -139,193 +94,78 @@ public class EndpointReferenceBuilderImpl implements CompositeBuilder, EndpointR
* @param endpoint
* @param monitor
*/
- public void build(EndpointReference endpointReference, Monitor monitor) {
- Endpoint endpoint = endpointReference.getTargetEndpoint();
-
- if (endpoint == null){
- // an error?
- } else {
- if (endpoint.isUnresolved() == false){
- // Wired - service resolved - binding matched
- // The service is in the same composite or the
- // binding is remote and has a full URI
-
- // still need to check that the callback endpoint is set correctly
- if ((endpointReference.getCallbackEndpoint() != null) &&
- (endpointReference.getCallbackEndpoint().isUnresolved() == false)){
- return;
- }
-
- matchCallbackBinding(endpointReference,
- monitor);
-
+ public void runtimeBuild(EndpointReference endpointReference) {
+
+ if ( endpointReference.getStatus() == EndpointReference.WIRED_TARGET_FOUND_AND_MATCHED ||
+ endpointReference.getStatus() == EndpointReference.RESOLVED_BINDING ) {
+ // The endpoint reference is already resolved to either
+ // a service endpoint local to this composite or it has
+ // a remote binding
+
+ // still need to check that the callback endpoint is set correctly
+ if ((endpointReference.getCallbackEndpoint() != null) &&
+ (endpointReference.getCallbackEndpoint().isUnresolved() == false)){
return;
}
- if (endpointReference.isUnresolved() == false ){
- // Wired - service resolved - binding not matched
- // The service is in the same composite
- // TODO - How do we get to here?
- matchForwardBinding(endpointReference,
- true,
- monitor);
-
- matchCallbackBinding(endpointReference,
- monitor);
- } else {
- // Wired - service specified but unresolved
- // The service is in a remote composite somewhere else in the domain
-
- // find the service in the endpoint registry
- List<Endpoint> endpoints = endpointRegistry.findEndpoint(endpointReference);
-
- // TODO - do we expect to find more than one endpoint in
- // anything other than the autowire case?
- if (endpoints.size() == 0) {
- throw new SCARuntimeException("No endpoints found for EndpointReference " + endpointReference.toString());
- }
-
- if (endpoints.size() > 1) {
- throw new SCARuntimeException("More than one endpoint found for EndpointReference" + endpointReference.toString());
- }
-
- endpointReference.setTargetEndpoint(endpoints.get(0));
+ selectCallbackBinding(endpointReference);
+
+ } else if (endpointReference.getStatus() == EndpointReference.WIRED_TARGET_FOUND_READY_FOR_MATCHING ){
+ // The endpoint reference is already resolved to either
+ // a service endpoint but no binding was specified in the
+ // target URL
+
+ // TODO - EPR - endpoint selection
+ // just use the first one
+ endpointReference.setTargetEndpoint(endpointReference.getTargetEndpoint().getService().getEndpoints().get(0));
+
+ selectForwardBinding(endpointReference);
+
+ selectCallbackBinding(endpointReference);
+
+ } else if (endpointReference.getStatus() == EndpointReference.WIRED_TARGET_NOT_FOUND ||
+ endpointReference.getStatus() == EndpointReference.NOT_CONFIGURED){
+ // The service is in a remote composite somewhere else in the domain
+
+ // find the service in the endpoint registry
+ List<Endpoint> endpoints = endpointRegistry.findEndpoint(endpointReference);
+
+ if (endpoints.size() == 0) {
+ throw new SCARuntimeException("No endpoints found for EndpointReference " + endpointReference.toString());
+ }
+
+ // TODO - EPR - endpoint selection
+ // just use the first one
+ endpointReference.setTargetEndpoint(endpoints.get(0));
- matchForwardBinding(endpointReference, false, monitor);
+ selectForwardBinding(endpointReference);
- matchCallbackBinding(endpointReference, monitor);
- }
+ selectCallbackBinding(endpointReference);
+
+ } else {
+ // endpointReference.getStatus() == EndpointReference.NOT_CONFIGURED
+ // An error as we shouldn't get here
+ throw new SCARuntimeException("EndpointReference can't be resolved " + endpointReference.toString());
}
- if (endpointReference.isUnresolved()){
- throw new SCARuntimeException("Can't resolve " + endpointReference.toString());
+ if (endpointReference.getStatus() != EndpointReference.WIRED_TARGET_FOUND_AND_MATCHED &&
+ endpointReference.getStatus() != EndpointReference.RESOLVED_BINDING){
+ throw new SCARuntimeException("EndpointReference can't be resolved " + endpointReference.toString());
}
}
- // TODO - EPR - In OASIS case there are no bindings to match with on the
- // reference side.
- private void matchForwardBinding(EndpointReference endpointReference,
- boolean local,
- Monitor monitor) {
+ private void selectForwardBinding(EndpointReference endpointReference) {
Endpoint endpoint = endpointReference.getTargetEndpoint();
-
- List<Binding> matchedReferenceBinding = new ArrayList<Binding>();
- List<Endpoint> matchedServiceEndpoint = new ArrayList<Endpoint>();
-
- // Find the corresponding bindings from the service side
- if ((endpointReference.getReference().getBindings().size() == 0) ||
- ((endpointReference.getReference().getBindings().size() == 1) &&
- (endpointReference.getReference().getBindings().get(0) instanceof SCABinding))){
- // OAISIS - choose a binding from the service side
- // (could have been specified as part of the target string)
- // last part of this test that is looking for binding SCA is
- // bogus. Just a temporary fix until we get rid of the OSOA
- // style reference side bindings.
-
- // retrieve the user specified binding name.
- // TODO - EPR - we don't support this yet
-
- // otherwise pick the first binding from the service
- if (local) {
- endpointReference.setTargetEndpoint(endpoint.getService().getEndpoints().get(0));
- } else {
- endpointReference.setTargetEndpoint(endpoint);
- }
- endpointReference.setBinding(endpointReference.getTargetEndpoint().getBinding());
- endpointReference.setUnresolved(false);
- return;
-
- } else {
- // OAISIS - this is an error
- // (for now let it match bindings while we rewrite OSOA tests)
- for (Binding referenceBinding : endpointReference.getReference().getBindings()) {
- if (local) {
- for (Endpoint serviceEndpoint : endpoint.getService().getEndpoints()) {
-
- if (referenceBinding.getType().equals(serviceEndpoint.getBinding().getType()) && hasCompatiblePolicySets(referenceBinding,
- serviceEndpoint
- .getBinding())) {
-
- matchedReferenceBinding.add(referenceBinding);
- matchedServiceEndpoint.add(serviceEndpoint);
- }
- }
- } else {
- Endpoint serviceEndpoint = endpoint;
- if (referenceBinding.getType().equals(serviceEndpoint.getBinding().getType()) && hasCompatiblePolicySets(referenceBinding,
- serviceEndpoint
- .getBinding())) {
-
- matchedReferenceBinding.add(referenceBinding);
- matchedServiceEndpoint.add(serviceEndpoint);
-
- }
- }
- }
- }
-
- if (matchedReferenceBinding.isEmpty()) {
- // No matching binding
- endpointReference.setBinding(null);
- endpointReference.setUnresolved(true);
- warning(monitor,
- "NoMatchingBinding",
- endpointReference.getReference(),
- endpointReference.getReference().getName(),
- endpoint.getService().getName());
- return;
- } else {
- // default to using the first matched binding
- int selectedBinding = 0;
-
- for (int i = 0; i < matchedReferenceBinding.size(); i++) {
- // If binding.sca is present, use it
- if (SCABinding.class.isInstance(matchedReferenceBinding.get(i))) {
- selectedBinding = i;
- }
- }
-
- Binding referenceBinding = matchedReferenceBinding.get(selectedBinding);
- Endpoint serviceEndpoint = matchedServiceEndpoint.get(selectedBinding);
-
- // populate the endpoint reference
- try {
-
- Binding clonedBinding = (Binding) referenceBinding.clone();
-
- // Set the binding URI to the URI of the target service
- // that has been matched
- if (referenceBinding.getURI() == null) {
- clonedBinding.setURI(serviceEndpoint.getBinding().getURI());
- }
-
- // TODO - EPR can we remove this?
- if (clonedBinding instanceof OptimizableBinding) {
- OptimizableBinding optimizableBinding = (OptimizableBinding)clonedBinding;
- optimizableBinding.setTargetComponent(serviceEndpoint.getComponent());
- optimizableBinding.setTargetComponentService(serviceEndpoint.getService());
- optimizableBinding.setTargetBinding(serviceEndpoint.getBinding());
- }
-
- endpointReference.setBinding(clonedBinding);
-
- Endpoint clonedEndpoint = (Endpoint)serviceEndpoint.clone();
-
- endpointReference.setTargetEndpoint(clonedEndpoint);
- endpointReference.setUnresolved(false);
-
- } catch (Exception ex) {
- // do nothing
- }
- }
+
+ endpointReference.setBinding(endpointReference.getTargetEndpoint().getBinding());
+ endpointReference.setStatus(EndpointReference.WIRED_TARGET_FOUND_AND_MATCHED);
+ endpointReference.setUnresolved(false);
+
+ return;
}
- // TODO - EPR
- // Find the callback endpoint for the endpoint reference by matching
- // callback bindings between reference and service
- private void matchCallbackBinding(EndpointReference endpointReference,
- Monitor monitor) {
+ private void selectCallbackBinding(EndpointReference endpointReference) {
// if no callback on the interface or we are creating a self reference do nothing
if (endpointReference.getReference().getInterfaceContract() == null ||
@@ -337,94 +177,10 @@ public class EndpointReferenceBuilderImpl implements CompositeBuilder, EndpointR
Endpoint endpoint = endpointReference.getTargetEndpoint();
List<Endpoint> callbackEndpoints = endpointReference.getReference().getCallbackService().getEndpoints();
- List<EndpointReference> callbackEndpointReferences = endpoint.getCallbackEndpointReferences();
-
- List<Endpoint> matchedEndpoint = new ArrayList<Endpoint>();
-
- // Find the corresponding bindings from callback service side
- if ((callbackEndpointReferences.size() ==0) ||
- (callbackEndpointReferences.get(0).getReference().getBindings().size() == 0) ||
- ((callbackEndpointReferences.get(0).getReference().getBindings().size() == 1) &&
- (callbackEndpointReferences.get(0).getReference().getBindings().get(0) instanceof SCABinding))){
- // OAISIS - choose a binding from the service side
- // (could have been specified as part of the target string)
- // last part of this test that is looking for binding SCA is
- // bogus. Just a temporary fix until we get rid of the OSOA
- // style reference side bindings.
-
- // retrieve the user specified binding name.
- // TODO - EPR - we don't support this yet
-
- // otherwise pick the first binding from the service
- //endpointReference.setTargetEndpoint(endpoint.getService().getEndpoints().get(0));
- //endpointReference.setBinding(endpointReference.getTargetEndpoint().getBinding());
- endpointReference.setCallbackEndpoint(callbackEndpoints.get(0));
- endpointReference.setUnresolved(false);
- return;
-
- } else {
- // OAISIS - this is an error
- // (for now let it match bindings while we rewrite OSOA tests)
-
- if ((callbackEndpoints != null) && (callbackEndpointReferences != null)){
- // Find the corresponding bindings from the service side
- for (EndpointReference epr : callbackEndpointReferences) {
- for (Endpoint ep : callbackEndpoints) {
-
- if (epr.getBinding().getType().equals(ep.getBinding().getType()) &&
- hasCompatiblePolicySets(epr.getBinding(), ep.getBinding())) {
-
- matchedEndpoint.add(ep);
- }
- }
- }
- }
- }
-
- if (matchedEndpoint.isEmpty()) {
- // No matching binding
- endpointReference.setCallbackEndpoint(null);
- endpointReference.setUnresolved(true);
- warning(monitor,
- "NoMatchingCallbackBinding",
- endpointReference.getReference(),
- endpointReference.getReference().getName(),
- endpoint.getService().getName());
- return;
- } else {
- // default to using the first matched binding
- int selectedEndpoint = 0;
-
- for (int i = 0; i < matchedEndpoint.size(); i++){
- // If binding.sca is present, use it
- if (SCABinding.class.isInstance(matchedEndpoint.get(i).getBinding())) {
- selectedEndpoint = i;
- }
- }
-
- endpointReference.setCallbackEndpoint(matchedEndpoint.get(selectedEndpoint));
- endpointReference.setUnresolved(false);
- }
+
+ endpointReference.setCallbackEndpoint(callbackEndpoints.get(0));
+ endpointReference.setStatus(EndpointReference.WIRED_TARGET_FOUND_AND_MATCHED);
+ endpointReference.setUnresolved(false);
}
- private boolean hasCompatiblePolicySets(Binding refBinding, Binding svcBinding) {
- boolean isCompatible = true;
- if ( refBinding instanceof PolicySubject && svcBinding instanceof PolicySubject ) {
- //TODO : need to add more compatibility checks at the policy attachment levels
- for ( PolicySet svcPolicySet : ((PolicySubject)svcBinding).getPolicySets() ) {
- isCompatible = false;
- for ( PolicySet refPolicySet : ((PolicySubject)refBinding).getPolicySets() ) {
- if ( svcPolicySet.equals(refPolicySet) ) {
- isCompatible = true;
- break;
- }
- }
- //if there exists no matching policy set in the reference binding
- if ( !isCompatible ) {
- return isCompatible;
- }
- }
- }
- return isCompatible;
- }
}
diff --git a/java/sca/modules/endpoint/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.CompositeBuilder b/java/sca/modules/endpoint/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.CompositeBuilder
deleted file mode 100644
index 541941c3d3..0000000000
--- a/java/sca/modules/endpoint/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.CompositeBuilder
+++ /dev/null
@@ -1,18 +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.
-
-org.apache.tuscany.sca.endpoint.impl.EndpointReferenceBuilderImpl;id=org.apache.tuscany.sca.endpoint.impl.EndpointReferenceBuilderImpl
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
index ea8b00a489..41531a7b10 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
@@ -57,6 +57,7 @@ import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderExtensionPoint;
import org.apache.tuscany.sca.assembly.builder.CompositeBuilderTmp;
+import org.apache.tuscany.sca.assembly.builder.EndpointReferenceBuilder;
import org.apache.tuscany.sca.contribution.Artifact;
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.ContributionFactory;
@@ -118,7 +119,7 @@ public class NodeFactoryImpl extends NodeFactory {
private StAXArtifactProcessor<Composite> compositeProcessor;
private ContributionFactory contributionFactory;
private ExtendedURLArtifactProcessor<Contribution> contributionProcessor;
- private CompositeBuilder endpointReferenceBuilder;
+ private EndpointReferenceBuilder endpointReferenceBuilder;
protected ExtensionPointRegistry extensionPoints;
private XMLInputFactory inputFactory;
protected FactoryExtensionPoint modelFactories;
@@ -417,9 +418,8 @@ public class NodeFactoryImpl extends NodeFactory {
CompositeBuilderExtensionPoint compositeBuilders = extensionPoints.getExtensionPoint(CompositeBuilderExtensionPoint.class);
compositeBuilder = compositeBuilders.getCompositeBuilder("org.apache.tuscany.sca.assembly.builder.CompositeBuilder");
- // Get endpoint builders
- // TODO - new extension point?
- endpointReferenceBuilder = compositeBuilders.getCompositeBuilder("org.apache.tuscany.sca.endpoint.impl.EndpointReferenceBuilderImpl");
+ // Get endpoint builder
+ endpointReferenceBuilder = utilities.getUtility(EndpointReferenceBuilder.class);
// Initialize runtime
@@ -548,7 +548,7 @@ public class NodeFactoryImpl extends NodeFactory {
((CompositeBuilderTmp)compositeBuilder).build(tempComposite, systemDefinitions, bindingMap, monitor);
analyzeProblems();
- endpointReferenceBuilder.build(tempComposite, systemDefinitions, monitor);
+ endpointReferenceBuilder.buildtimeBuild(tempComposite);
analyzeProblems();
return tempComposite;