Author: rfeng
Date: Wed Oct 22 15:40:19 2008
New Revision: 707218
URL: http://svn.apache.org/viewvc?rev=707218&view=rev
Log:
Start to add InvocationChain for bindings
Modified:
tuscany/java/sca/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java
tuscany/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeWire.java
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Phase.java
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeWire.java
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointWireImpl.java
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/RuntimeWireImpl.java
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/PhaseManager.java
tuscany/java/sca/modules/core/src/test/resources/META-INF/services/org.apache.tuscany.sca.invocation.PhaseTest
Modified:
tuscany/java/sca/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java?rev=707218&r1=707217&r2=707218&view=diff
==============================================================================
---
tuscany/java/sca/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java
(original)
+++
tuscany/java/sca/itest/jms/src/main/java/org/apache/tuscany/sca/binding/jms/TestMessageProcessor.java
Wed Oct 22 15:40:19 2008
@@ -22,7 +22,7 @@
import javax.jms.Message;
import javax.jms.Session;
-import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
+import org.apache.tuscany.sca.binding.jms.impl.JMSBindingImpl;
import org.apache.tuscany.sca.binding.jms.provider.XMLTextMessageProcessor;
public class TestMessageProcessor extends XMLTextMessageProcessor {
@@ -31,7 +31,7 @@
public static boolean extractPayloadFromJMSMessageCalled;
public static boolean setOperationNameCalled;
- public TestMessageProcessor(JMSBinding jmsBinding) {
+ public TestMessageProcessor(JMSBindingImpl jmsBinding) {
super(jmsBinding);
}
public Object extractPayloadFromJMSMessage(Message message) {
Modified:
tuscany/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeWire.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeWire.java?rev=707218&r1=707217&r2=707218&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeWire.java
(original)
+++
tuscany/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeWire.java
Wed Oct 22 15:40:19 2008
@@ -33,7 +33,6 @@
* Mock RuntimeWire implementation. Only few methods needs to be implemented.
*/
public class TestRuntimeWire implements RuntimeWire {
-
private Object invocationTarget;
public TestRuntimeWire(Object invocationTarget) {
@@ -97,4 +96,7 @@
return null;
}
+ public InvocationChain getBindingInvocationChain() {
+ return null;
+ }
}
Modified:
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Phase.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Phase.java?rev=707218&r1=707217&r2=707218&view=diff
==============================================================================
---
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Phase.java
(original)
+++
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Phase.java
Wed Oct 22 15:40:19 2008
@@ -37,6 +37,16 @@
// reference binding invoker
String REFERENCE_BINDING = "reference.binding";
+ String REFERENCE_BINDING_DISPATCHER = "reference.binding.dispatcher";
+ String REFERENCE_BINDING_WIREFORMAT = "reference.binding.wireformat";
+ String REFERENCE_BINDING_POLICY = "reference.binding.policy";
+ String REFERENCE_BINDING_TRANSPORT = "reference.binding.transport";
+
+ String SERVICE_BINDING_TRANSPORT = "service.binding.transport";
+ String SERVICE_BINDING_WIREFORMAT = "service.binding.wireformat";
+ String SERVICE_BINDING_POLICY = "service.binding.policy";
+ String SERVICE_BINDING_OPERATION_SELECTOR =
"service.binding.operationselector";
+
// The first phase for incoming invocations via a service
String SERVICE_BINDING = "service.binding";
Modified:
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeWire.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeWire.java?rev=707218&r1=707217&r2=707218&view=diff
==============================================================================
---
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeWire.java
(original)
+++
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/RuntimeWire.java
Wed Oct 22 15:40:19 2008
@@ -76,6 +76,12 @@
InvocationChain getInvocationChain(Operation operation);
/**
+ * Get the invocation chain for the binding-specific handling
+ * @return
+ */
+ InvocationChain getBindingInvocationChain();
+
+ /**
* Invoke an operation with given arguments
* @param operation The operation
* @param args The arguments
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointWireImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointWireImpl.java?rev=707218&r1=707217&r2=707218&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointWireImpl.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/EndpointWireImpl.java
Wed Oct 22 15:40:19 2008
@@ -24,6 +24,7 @@
import org.apache.tuscany.sca.assembly.Endpoint;
import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.core.invocation.InvocationChainImpl;
import org.apache.tuscany.sca.endpointresolver.EndpointResolver;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.Operation;
@@ -47,6 +48,7 @@
private EndpointResolver endpointResolver;
private EndpointReference source;
private RuntimeWire wire;
+ private InvocationChain binidngInvocationChain;
/**
* @param endpoint
@@ -150,6 +152,17 @@
public void rebuild() {
}
+
+ public synchronized InvocationChain getBindingInvocationChain() {
+ if (binidngInvocationChain == null) {
+ if (source instanceof RuntimeComponentReference) {
+ binidngInvocationChain = new InvocationChainImpl(null, null,
true);
+ } else {
+ binidngInvocationChain = new InvocationChainImpl(null, null,
false);
+ }
+ }
+ return binidngInvocationChain;
+ }
// TODO: TUSCANY-2580: give RuntimeComponentReferenceImpl a way to get at
the endpoint
public Endpoint getEndpoint() {
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/RuntimeWireImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/RuntimeWireImpl.java?rev=707218&r1=707217&r2=707218&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/RuntimeWireImpl.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/RuntimeWireImpl.java
Wed Oct 22 15:40:19 2008
@@ -76,6 +76,7 @@
private RuntimeWireImpl clonedFrom;
private List<InvocationChain> chains;
+ private InvocationChain binidngInvocationChain;
/**
* @param source
@@ -110,6 +111,18 @@
}
return chains;
}
+
+ public synchronized InvocationChain getBindingInvocationChain() {
+ if (binidngInvocationChain == null) {
+ Contract source = wireSource.getContract();
+ if (source instanceof RuntimeComponentReference) {
+ binidngInvocationChain = new InvocationChainImpl(null, null,
true);
+ } else {
+ binidngInvocationChain = new InvocationChainImpl(null, null,
false);
+ }
+ }
+ return binidngInvocationChain;
+ }
public InvocationChain getInvocationChain(Operation operation) {
for (InvocationChain chain : getInvocationChains()) {
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/PhaseManager.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/PhaseManager.java?rev=707218&r1=707217&r2=707218&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/PhaseManager.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/PhaseManager.java
Wed Oct 22 15:40:19 2008
@@ -19,6 +19,25 @@
package org.apache.tuscany.sca.core.invocation;
+import static org.apache.tuscany.sca.invocation.Phase.IMPLEMENTATION;
+import static org.apache.tuscany.sca.invocation.Phase.IMPLEMENTATION_POLICY;
+import static org.apache.tuscany.sca.invocation.Phase.REFERENCE;
+import static org.apache.tuscany.sca.invocation.Phase.REFERENCE_BINDING;
+import static
org.apache.tuscany.sca.invocation.Phase.REFERENCE_BINDING_DISPATCHER;
+import static org.apache.tuscany.sca.invocation.Phase.REFERENCE_BINDING_POLICY;
+import static
org.apache.tuscany.sca.invocation.Phase.REFERENCE_BINDING_TRANSPORT;
+import static
org.apache.tuscany.sca.invocation.Phase.REFERENCE_BINDING_WIREFORMAT;
+import static org.apache.tuscany.sca.invocation.Phase.REFERENCE_INTERFACE;
+import static org.apache.tuscany.sca.invocation.Phase.REFERENCE_POLICY;
+import static org.apache.tuscany.sca.invocation.Phase.SERVICE;
+import static org.apache.tuscany.sca.invocation.Phase.SERVICE_BINDING;
+import static
org.apache.tuscany.sca.invocation.Phase.SERVICE_BINDING_OPERATION_SELECTOR;
+import static org.apache.tuscany.sca.invocation.Phase.SERVICE_BINDING_POLICY;
+import static
org.apache.tuscany.sca.invocation.Phase.SERVICE_BINDING_TRANSPORT;
+import static
org.apache.tuscany.sca.invocation.Phase.SERVICE_BINDING_WIREFORMAT;
+import static org.apache.tuscany.sca.invocation.Phase.SERVICE_INTERFACE;
+import static org.apache.tuscany.sca.invocation.Phase.SERVICE_POLICY;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -42,15 +61,24 @@
private static final Logger log =
Logger.getLogger(PhaseManager.class.getName());
public static final String STAGE_REFERENCE = "reference";
+ public static final String STAGE_REFERENCE_BINDING = "reference.binding";
+ public static final String STAGE_SERVICE_BINDING = "service.binding";
public static final String STAGE_SERVICE = "service";
public static final String STAGE_IMPLEMENTATION = "implementation";
+
private static final String[] SYSTEM_REFERENCE_PHASES =
- {Phase.REFERENCE, Phase.REFERENCE_INTERFACE, Phase.REFERENCE_POLICY,
Phase.REFERENCE_BINDING};
+ {REFERENCE, REFERENCE_INTERFACE, REFERENCE_POLICY, REFERENCE_BINDING};
+
+ private static final String[] SYSTEM_REFERENCE_BINDING_PHASES =
+ {REFERENCE_BINDING_DISPATCHER, REFERENCE_BINDING_WIREFORMAT,
REFERENCE_BINDING_POLICY, REFERENCE_BINDING_TRANSPORT};
+ private static final String[] SYSTEM_SERVICE_BINDING_PHASES =
+ {SERVICE_BINDING_TRANSPORT, SERVICE_BINDING_WIREFORMAT,
SERVICE_BINDING_POLICY, SERVICE_BINDING_OPERATION_SELECTOR};
+
private static final String[] SYSTEM_SERVICE_PHASES =
- {Phase.SERVICE_BINDING, Phase.SERVICE_POLICY, Phase.SERVICE_INTERFACE,
Phase.SERVICE};
+ {SERVICE_BINDING, SERVICE_POLICY, SERVICE_INTERFACE, SERVICE};
- private static final String[] SYSTEM_IMPLEMENTATION_PHASES =
{Phase.IMPLEMENTATION_POLICY, Phase.IMPLEMENTATION};
+ private static final String[] SYSTEM_IMPLEMENTATION_PHASES =
{IMPLEMENTATION_POLICY, IMPLEMENTATION};
private String pattern = Phase.class.getName();
private Map<String, Stage> stages;
@@ -116,6 +144,14 @@
return getPhases(STAGE_SERVICE);
}
+ public List<String> getReferenceBindingPhases() {
+ return getPhases(STAGE_REFERENCE_BINDING);
+ }
+
+ public List<String> getServiceBindingPhases() {
+ return getPhases(STAGE_SERVICE_BINDING);
+ }
+
public List<String> getImplementationPhases() {
return getPhases(STAGE_IMPLEMENTATION);
}
@@ -124,6 +160,8 @@
if (phases == null) {
phases = new ArrayList<String>();
phases.addAll(getReferencePhases());
+ phases.addAll(getReferenceBindingPhases());
+ phases.addAll(getServiceBindingPhases());
phases.addAll(getServicePhases());
phases.addAll(getImplementationPhases());
}
@@ -228,9 +266,22 @@
for (int i = 1; i < SYSTEM_REFERENCE_PHASES.length; i++) {
referenceStage.getSorter().addEdge(SYSTEM_REFERENCE_PHASES[i - 1],
SYSTEM_REFERENCE_PHASES[i]);
}
- referenceStage.getLastSet().add(Phase.REFERENCE_BINDING);
+ referenceStage.getLastSet().add(REFERENCE_BINDING);
stages.put(referenceStage.getName(), referenceStage);
+ Stage referenceBindingStage = new Stage(STAGE_REFERENCE_BINDING);
+ for (int i = 1; i < SYSTEM_REFERENCE_BINDING_PHASES.length; i++) {
+
referenceBindingStage.getSorter().addEdge(SYSTEM_REFERENCE_BINDING_PHASES[i -
1], SYSTEM_REFERENCE_BINDING_PHASES[i]);
+ }
+ stages.put(referenceBindingStage.getName(), referenceBindingStage);
+
+ Stage serviceBindingStage = new Stage(STAGE_SERVICE_BINDING);
+ for (int i = 1; i < SYSTEM_SERVICE_BINDING_PHASES.length; i++) {
+
serviceBindingStage.getSorter().addEdge(SYSTEM_SERVICE_BINDING_PHASES[i - 1],
SYSTEM_SERVICE_BINDING_PHASES[i]);
+ }
+ stages.put(serviceBindingStage.getName(), serviceBindingStage);
+
+
Stage serviceStage = new Stage(STAGE_SERVICE);
for (int i = 1; i < SYSTEM_SERVICE_PHASES.length; i++) {
serviceStage.getSorter().addEdge(SYSTEM_SERVICE_PHASES[i - 1],
SYSTEM_SERVICE_PHASES[i]);
@@ -242,7 +293,7 @@
implementationStage.getSorter().addEdge(SYSTEM_IMPLEMENTATION_PHASES[i - 1],
SYSTEM_IMPLEMENTATION_PHASES[i]);
}
- implementationStage.getLastSet().add(Phase.IMPLEMENTATION);
+ implementationStage.getLastSet().add(IMPLEMENTATION);
stages.put(implementationStage.getName(), implementationStage);
}
}
Modified:
tuscany/java/sca/modules/core/src/test/resources/META-INF/services/org.apache.tuscany.sca.invocation.PhaseTest
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/test/resources/META-INF/services/org.apache.tuscany.sca.invocation.PhaseTest?rev=707218&r1=707217&r2=707218&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/test/resources/META-INF/services/org.apache.tuscany.sca.invocation.PhaseTest
(original)
+++
tuscany/java/sca/modules/core/src/test/resources/META-INF/services/org.apache.tuscany.sca.invocation.PhaseTest
Wed Oct 22 15:40:19 2008
@@ -18,5 +18,7 @@
name=implementation.last, stage=implementation, after=*
name=reference.first, stage=reference, before=*
name=reference.transaction, stage=reference, after=reference.interface
+name=reference.binding.header, stage=reference.binding,
after=reference.binding.transport
+name=service.binding.header, stage=service.binding,
after=service.binding.transport
name=service.transaction, stage=service, after=service.binding,
before=component.service
-name=implementation.transaction, stage=implementation,
before=implementation.policy
\ No newline at end of file
+name=implementation.transaction, stage=implementation,
before=implementation.policy