summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java17
-rw-r--r--sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java8
-rw-r--r--sca-java-2.x/trunk/modules/core/META-INF/MANIFEST.MF1
-rw-r--r--sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java33
-rw-r--r--sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java10
-rw-r--r--sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java9
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java8
-rw-r--r--sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientHandler.java2
8 files changed, 70 insertions, 18 deletions
diff --git a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
index 6d81a596b3..23a50e5f22 100644
--- a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
+++ b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/CompositeContext.java
@@ -23,6 +23,7 @@ import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.assembly.EndpointReference;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.runtime.EndpointRegistry;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
@@ -41,8 +42,9 @@ public class CompositeContext {
protected Composite domainComposite;
protected String nodeURI;
protected String domainURI;
+ protected Definitions systemDefinitions;
- public CompositeContext(ExtensionPointRegistry registry, EndpointRegistry endpointRegistry, Composite domainComposite, String domainURI, String nodeURI) {
+ public CompositeContext(ExtensionPointRegistry registry, EndpointRegistry endpointRegistry, Composite domainComposite, String domainURI, String nodeURI, Definitions systemDefinitions) {
this.extensionPointRegistry = registry;
this.endpointRegistry = endpointRegistry;
ContextFactoryExtensionPoint contextFactories = registry.getExtensionPoint(ContextFactoryExtensionPoint.class);
@@ -50,10 +52,11 @@ public class CompositeContext {
this.domainComposite = domainComposite;
this.domainURI = domainURI;
this.nodeURI = nodeURI;
+ this.systemDefinitions = systemDefinitions;
}
public CompositeContext(ExtensionPointRegistry registry, EndpointRegistry endpointRegistry) {
- this(registry, endpointRegistry, null, "default", "default");
+ this(registry, endpointRegistry, null, "default", "default", null);
}
/**
@@ -136,4 +139,14 @@ public class CompositeContext {
public String getDomainURI() {
return domainURI;
}
+
+ /**
+ * The system definitions that result from starting the runtime.
+ * TODO - these can be null when the SCAClient starts the runtime
+ *
+ * @return systemDefinitions
+ */
+ public Definitions getSystemDefinitions() {
+ return systemDefinitions;
+ }
}
diff --git a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
index 178f184c1f..97a849f14c 100644
--- a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
+++ b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeEndpoint.java
@@ -22,6 +22,7 @@ package org.apache.tuscany.sca.runtime;
import java.io.Serializable;
import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.context.CompositeContext;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.provider.ServiceBindingProvider;
@@ -55,4 +56,11 @@ public interface RuntimeEndpoint extends Endpoint, Invocable, Serializable {
* @return The target component type service interface contract
*/
InterfaceContract getComponentTypeServiceInterfaceContract();
+
+ /**
+ * Get the composite context for the composite that contains this endpoint. This
+ * is useful for accessing various composite level objects from within the
+ * runtime code
+ */
+ CompositeContext getCompositeContext();
}
diff --git a/sca-java-2.x/trunk/modules/core/META-INF/MANIFEST.MF b/sca-java-2.x/trunk/modules/core/META-INF/MANIFEST.MF
index da7db3a718..62fc183f20 100644
--- a/sca-java-2.x/trunk/modules/core/META-INF/MANIFEST.MF
+++ b/sca-java-2.x/trunk/modules/core/META-INF/MANIFEST.MF
@@ -47,6 +47,7 @@ Import-Package: javax.security.auth,
org.apache.tuscany.sca.core.factory;version="2.0.0",
org.apache.tuscany.sca.core.invocation;version="2.0.0",
org.apache.tuscany.sca.core.scope;version="2.0.0",
+ org.apache.tuscany.sca.definitions;version="2.0.0",
org.apache.tuscany.sca.extensibility;version="2.0.0",
org.apache.tuscany.sca.interfacedef;version="2.0.0",
org.apache.tuscany.sca.interfacedef.impl;version="2.0.0";resolution:=optional,
diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
index 8eade75a8c..0a88429848 100644
--- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
+++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
@@ -40,15 +40,19 @@ import org.apache.tuscany.sca.assembly.builder.PolicyBuilder;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl;
+import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.MonitorFactory;
+import org.apache.tuscany.sca.policy.BindingType;
import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.IntentMap;
import org.apache.tuscany.sca.policy.PolicySet;
import org.apache.tuscany.sca.policy.Qualifier;
import org.apache.tuscany.sca.runtime.EndpointReferenceBinder;
import org.apache.tuscany.sca.runtime.EndpointRegistry;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
import org.oasisopen.sca.ServiceRuntimeException;
/**
@@ -482,18 +486,26 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
List<Intent> eprIntents = new ArrayList<Intent>();
eprIntents.addAll(endpointReference.getRequiredIntents());
+ // TODO - seems that we should do this loop on a binding by binding basis
+ // rather than each time we do matching
+ BindingType bindingType = null;
+ Definitions systemDefinitions = ((RuntimeEndpoint)endpoint).getCompositeContext().getSystemDefinitions();
+ for (BindingType loopBindingType : systemDefinitions.getBindingTypes()){
+ if (loopBindingType.getType().equals(binding.getType())){
+ bindingType = loopBindingType;
+ break;
+ }
+ }
+
// first check the binding type
- for (Intent intent : endpointReference.getRequiredIntents()){
-/* TODO
- BindingType bindingType = null; //TODO - where to get this?
-
- if (bindingType.getAlwaysProvidedIntents().contains(intent)){
+ for (Intent intent : endpointReference.getRequiredIntents()){
+ if (bindingType != null &&
+ bindingType.getAlwaysProvidedIntents().contains(intent)){
eprIntents.remove(intent);
- } else if (bindingType.getMayProvidedIntents().contains(intent)){
+ } else if (bindingType != null &&
+ bindingType.getMayProvidedIntents().contains(intent)){
eprIntents.remove(intent);
} else {
-
-*/
// TODO - this code also appears in the ComponentPolicyBuilder
// so should rationalize
loop: for (PolicySet policySet : referencePolicySets){
@@ -517,11 +529,8 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
}
}
}
- }
-
-/*
+ }
}
- */
}
// if there are unresolved intents the service and reference don't match
diff --git a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
index e0691ab11b..349c28d66e 100644
--- a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
+++ b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
@@ -471,4 +471,14 @@ public class NodeFactoryImpl extends NodeFactory {
super.configure(attributes);
}
+ /**
+ * Added to allow the node access to the deployer in order to get
+ * to the systemContribution and hence set up the CompositeContext so that
+ * the runtime epr matching algorithm can get at the binding types
+ * @return
+ */
+ public Deployer getDeployer() {
+ return deployer;
+ }
+
}
diff --git a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
index eef9f39009..36091bec6c 100644
--- a/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
+++ b/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
@@ -128,8 +128,13 @@ public class NodeImpl implements Node {
domainComposite = manager.configureNode(configuration, contributions, context);
this.compositeContext =
- new CompositeContext(manager.registry, endpointRegistry, domainComposite, configuration
- .getDomainURI(), configuration.getURI());
+ new CompositeContext(manager.registry,
+ endpointRegistry,
+ domainComposite,
+ configuration.getDomainURI(),
+ configuration.getURI(),
+ manager.getDeployer().getSystemDefinitions());
+
CompositeContext.setThreadCompositeContext(compositeContext);
} finally {
// Reset the thread context monitor
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java
index c3cfdc791c..d32afb2acb 100644
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientFactoryImpl.java
@@ -93,8 +93,14 @@ public class SCAClientFactoryImpl extends SCAClientFactory {
this.proxyFactory = ExtensibleProxyFactory.getInstance(extensionsRegistry);
String client = "sca.client." + UUID.randomUUID();
+
this.compositeContext =
- new CompositeContext(extensionsRegistry, endpointRegistry, null, domainURI.toString(), client);
+ new CompositeContext(extensionsRegistry,
+ endpointRegistry,
+ null,
+ domainURI.toString(),
+ client,
+ this.nodeFactory.getDeployer().getSystemDefinitions());
}
@Override
diff --git a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientHandler.java b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientHandler.java
index 6c4f1bacb8..86bdef8380 100644
--- a/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientHandler.java
+++ b/sca-java-2.x/trunk/modules/sca-client-impl/src/main/java/org/apache/tuscany/sca/client/impl/SCAClientHandler.java
@@ -91,7 +91,7 @@ public class SCAClientHandler implements InvocationHandler {
String client = "sca.client." + UUID.randomUUID();
CompositeContext compositeContext =
- new CompositeContext(extensionsRegistry, endpointRegistry, null, domainURI.toString(), client);
+ new CompositeContext(extensionsRegistry, endpointRegistry, null, domainURI.toString(), client, null);
List<Endpoint> eps = endpointRegistry.findEndpoint(serviceName);
if (eps == null || eps.size() < 1) {