You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/11/25 08:04:47 UTC
svn commit: r479093 [3/5] - in /incubator/tuscany/java/sca:
kernel/core/src/main/java/org/apache/tuscany/core/component/scope/
kernel/core/src/main/java/org/apache/tuscany/core/idl/java/
kernel/core/src/main/java/org/apache/tuscany/core/implementation/...
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InboundInvocationErrorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InboundInvocationErrorTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InboundInvocationErrorTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InboundInvocationErrorTestCase.java Fri Nov 24 23:04:41 2006
@@ -28,6 +28,7 @@
import org.apache.tuscany.spi.idl.InvalidServiceContractException;
import org.apache.tuscany.spi.idl.java.JavaInterfaceProcessorRegistry;
import org.apache.tuscany.spi.model.Operation;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
import org.apache.tuscany.spi.model.ServiceContract;
import org.apache.tuscany.spi.wire.InboundInvocationChain;
import org.apache.tuscany.spi.wire.InboundWire;
@@ -82,7 +83,8 @@
WorkContext workContext = EasyMock.createNiceMock(WorkContext.class);
EasyMock.replay(workContext);
- Operation<Type> operation = new Operation<Type>("checkedException", null, null, null, false, null);
+ Operation<Type> operation =
+ new Operation<Type>("checkedException", null, null, null, false, null, NO_CONVERSATION);
Map<Operation<?>, InboundInvocationChain> chains = new HashMap<Operation<?>, InboundInvocationChain>();
chains.put(operation, createChain(checkedMethod, checkedOperation));
InboundWire wire = new InboundWireImpl();
@@ -105,7 +107,8 @@
WorkContext workContext = EasyMock.createNiceMock(WorkContext.class);
EasyMock.replay(workContext);
- Operation<Type> operation = new Operation<Type>("runtimeException", null, null, null, false, null);
+ Operation<Type> operation =
+ new Operation<Type>("runtimeException", null, null, null, false, null, NO_CONVERSATION);
Map<Operation<?>, InboundInvocationChain> chains = new HashMap<Operation<?>, InboundInvocationChain>();
chains.put(operation, createChain(runtimeMethod, runtimeOperation));
InboundWire wire = new InboundWireImpl();
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptorTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptorTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingBridgingInterceptorTestCase.java Fri Nov 24 23:04:41 2006
@@ -53,9 +53,9 @@
replay(scheduler);
WorkContext context = createMock(WorkContext.class);
String convID = "convID";
- EasyMock.expect(context.getIdentifier(Scope.CONVERSATIONAL)).andReturn(convID);
+ EasyMock.expect(context.getIdentifier(Scope.CONVERSATION)).andReturn(convID);
context.setCurrentCorrelationId(null);
- context.setIdentifier(Scope.CONVERSATIONAL, convID);
+ context.setIdentifier(Scope.CONVERSATION, convID);
EasyMock.replay(context);
Message msg = new MessageImpl();
Interceptor next = EasyMock.createMock(Interceptor.class);
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java Fri Nov 24 23:04:41 2006
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.core.wire;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
+
import java.lang.reflect.Type;
import org.apache.tuscany.spi.model.Operation;
@@ -93,7 +95,7 @@
protected void setUp() throws Exception {
super.setUp();
- operation = new Operation<Type>("foo", null, null, null, false, null);
+ operation = new Operation<Type>("foo", null, null, null, false, null, NO_CONVERSATION);
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerSerializationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerSerializationTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerSerializationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerSerializationTestCase.java Fri Nov 24 23:04:41 2006
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.core.wire.jdk;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
@@ -77,7 +79,7 @@
wire = EasyMock.createMock(InboundWire.class);
Map<Operation<?>, InboundInvocationChain> map = new HashMap<Operation<?>, InboundInvocationChain>();
- Operation<Object> operation = new Operation<Object>("invoke", null, null, null, false, null);
+ Operation<Object> operation = new Operation<Object>("invoke", null, null, null, false, null, NO_CONVERSATION);
map.put(operation, createChain(operation));
EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInboundInvocationHandlerTestCase.java Fri Nov 24 23:04:41 2006
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.core.wire.jdk;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
+
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.lang.reflect.Type;
@@ -144,7 +146,7 @@
types.add(type);
DataType<List<DataType<Type>>> inputType =
new DataType<List<DataType<Type>>>(Object[].class, types);
- Operation<Type> operation = new Operation<Type>("echo", inputType, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("echo", inputType, null, null, false, null, NO_CONVERSATION);
Map<Operation<?>, InboundInvocationChain> chains = new HashMap<Operation<?>, InboundInvocationChain>();
chains.put(operation, chain);
InboundWire wire = new InboundWireImpl();
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerSerializationTestCase.java Fri Nov 24 23:04:41 2006
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.core.wire.jdk;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
@@ -81,7 +83,7 @@
EasyMock.replay(container);
wire = EasyMock.createMock(OutboundWire.class);
Map<Operation<?>, OutboundInvocationChain> map = new HashMap<Operation<?>, OutboundInvocationChain>();
- Operation<Object> operation = new Operation<Object>("invoke", null, null, null, false, null);
+ Operation<Object> operation = new Operation<Object>("invoke", null, null, null, false, null, NO_CONVERSATION);
map.put(operation, createChain(operation));
EasyMock.expect(wire.getContainer()).andReturn(container).atLeastOnce();
EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKOutboundInvocationHandlerTestCase.java Fri Nov 24 23:04:41 2006
@@ -100,21 +100,21 @@
replay(outboundWire);
Object convID = new Object();
- wc.setIdentifier(Scope.CONVERSATIONAL, convID);
+ wc.setIdentifier(Scope.CONVERSATION, convID);
invoker.setCurrentConversationID(convID);
outboundContract.setRemotable(true);
invoker.setRemotableTest(true);
JDKOutboundInvocationHandler handler = new JDKOutboundInvocationHandler(outboundWire, wc);
handler.invoke(Foo.class.getMethod("test", new Class[]{String.class}), new Object[]{"bar"});
- Object currentConvID = wc.getIdentifier(Scope.CONVERSATIONAL);
+ Object currentConvID = wc.getIdentifier(Scope.CONVERSATION);
assertSame(convID, currentConvID);
outboundContract.setRemotable(false);
invoker.setRemotableTest(false);
JDKOutboundInvocationHandler handler2 = new JDKOutboundInvocationHandler(outboundWire, wc);
handler2.invoke(Foo.class.getMethod("test", new Class[]{String.class}), new Object[]{"bar"});
- currentConvID = wc.getIdentifier(Scope.CONVERSATIONAL);
+ currentConvID = wc.getIdentifier(Scope.CONVERSATION);
assertSame(convID, currentConvID);
}
@@ -140,9 +140,9 @@
this.remotableTest = remotableTest;
}
- public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
assertEquals("bar", Array.get(payload, 0));
- Object convID = wc.getIdentifier(Scope.CONVERSATIONAL);
+ Object convID = wc.getIdentifier(Scope.CONVERSATION);
if (remotableTest) {
assertNotSame(convID, currentConversationID);
} else {
Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/InvalidConversationSequenceException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/InvalidConversationSequenceException.java?view=auto&rev=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/InvalidConversationSequenceException.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/InvalidConversationSequenceException.java Fri Nov 24 23:04:41 2006
@@ -0,0 +1,42 @@
+/*
+ * 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.spi.component;
+
+/**
+ * Denotes an unknown operation sequence in a conversation
+ *
+ * @version $Rev$ $Date$
+ */
+public class InvalidConversationSequenceException extends TargetException {
+
+ public InvalidConversationSequenceException() {
+ }
+
+ public InvalidConversationSequenceException(String message) {
+ super(message);
+ }
+
+ public InvalidConversationSequenceException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public InvalidConversationSequenceException(Throwable cause) {
+ super(cause);
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/InvalidConversationSequenceException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/InvalidConversationSequenceException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PersistentScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PersistentScopeContainer.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PersistentScopeContainer.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PersistentScopeContainer.java Fri Nov 24 23:04:41 2006
@@ -34,7 +34,7 @@
* @param expiration the expiration in milliseconds
* @throws PersistenceException
*/
- void persistNew(AtomicComponent component, Object id, Object instance, long expiration) throws PersistenceException;
+ void persistNew(AtomicComponent component, String id, Object instance, long expiration) throws PersistenceException;
/**
* Persists a component implementation instance, equivalent to an update operation
@@ -45,7 +45,7 @@
* @param expiration the expiration in milliseconds
* @throws PersistenceException
*/
- void persist(AtomicComponent component, Object id, Object instance, long expiration) throws PersistenceException;
+ void persist(AtomicComponent component, String id, Object instance, long expiration) throws PersistenceException;
/**
* Removes a component implementation instance from persistent storage
@@ -54,14 +54,6 @@
* @param id the id associated with the instance
* @throws PersistenceException
*/
- void remove(AtomicComponent component, Object id) throws PersistenceException;
-
- /**
- * Returns a previously instance associated with the current component. If no instance is found, a {@link
- * TargetNotFoundException} is thrown
- *
- * @throws TargetException
- */
- Object getPersistedInstance(AtomicComponent component) throws TargetException;
+ void remove(AtomicComponent component, String id) throws PersistenceException;
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ScopeContainer.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ScopeContainer.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ScopeContainer.java Fri Nov 24 23:04:41 2006
@@ -47,10 +47,18 @@
void register(AtomicComponent component);
/**
- * Returns an instance associated with the current component
+ * Returns an implementation instance associated with the current request context, creating one if necessary
*
* @throws TargetException
*/
Object getInstance(AtomicComponent component) throws TargetException;
+
+ /**
+ * Returns an implementation instance associated with the current context. If no instance is found, a {@link
+ * TargetNotFoundException} is thrown
+ *
+ * @throws TargetException
+ */
+ Object getAssociatedInstance(AtomicComponent component) throws TargetException;
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java Fri Nov 24 23:04:41 2006
@@ -60,7 +60,7 @@
if (callbackRoutingChain != null) {
workContext.setCurrentCallbackRoutingChain(callbackRoutingChain);
}
- Object resp = invokeTarget(msg.getBody());
+ Object resp = invokeTarget(msg.getBody(), msg.getConversationSequence());
msg.setBody(resp);
} catch (InvocationTargetException e) {
msg.setBodyWithFault(e.getCause());
Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/InvalidConversationalContractException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/InvalidConversationalContractException.java?view=auto&rev=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/InvalidConversationalContractException.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/InvalidConversationalContractException.java Fri Nov 24 23:04:41 2006
@@ -0,0 +1,42 @@
+/*
+ * 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.spi.idl;
+
+/**
+ * Denotes an invalid conversational interface definition
+ *
+ * @version $Rev$ $Date$
+ */
+public class InvalidConversationalContractException extends InvalidServiceContractException {
+
+ public InvalidConversationalContractException() {
+ }
+
+ public InvalidConversationalContractException(String message) {
+ super(message);
+ }
+
+ public InvalidConversationalContractException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public InvalidConversationalContractException(Throwable cause) {
+ super(cause);
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/InvalidConversationalContractException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/InvalidConversationalContractException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java Fri Nov 24 23:04:41 2006
@@ -32,28 +32,24 @@
* @version $Rev$ $Date$
*/
public class Operation<T> {
- private static final String NAME = Operation.class.getName();
+ public static final int NO_CONVERSATION = -1;
+ public static final int CONVERSATION_START = 0;
+ public static final int CONVERSATION_CONTINUE = 1;
+ public static final int CONVERSATION_END = 2;
+ private static final String NAME = Operation.class.getName();
protected Map<String, Object> metaData;
-
private final String name;
-
+ private ServiceContract<T> contract;
private final DataType<T> outputType;
-
private final DataType<List<DataType<T>>> inputType;
-
private final List<DataType<T>> faultTypes;
-
- private boolean nonBlocking;
-
- private ServiceContract<T> contract;
-
- private boolean callback;
-
private String dataBinding;
-
private boolean wrapperStyle;
private WrapperInfo wrapper;
+ private boolean callback;
+ private boolean nonBlocking;
+ private int conversationSequence = NO_CONVERSATION;
/**
* Construct a minimally-specified operation
@@ -67,7 +63,7 @@
DataType<List<DataType<T>>> inputType,
DataType<T> outputType,
List<DataType<T>> faultTypes) {
- this(name, inputType, outputType, faultTypes, false, null);
+ this(name, inputType, outputType, faultTypes, false, null, NO_CONVERSATION);
}
/**
@@ -79,13 +75,16 @@
* @param faultTypes the data type of faults raised by the operation
* @param nonBlocking if the operation is non-blocking
* @param dataBinding the data-binding type required by the operation
+ * @param sequence the conversational attributes of the operation, {@link NO_CONVERSATION}, {@link
+ * CONVERSATION_START}, {@link CONVERSATION_CONTINUE}, or {@link CONVERSATION_END}
*/
public Operation(final String name,
final DataType<List<DataType<T>>> inputType,
final DataType<T> outputType,
final List<DataType<T>> faultTypes,
boolean nonBlocking,
- String dataBinding) {
+ String dataBinding,
+ int sequence) {
super();
this.name = name;
List<DataType<T>> types = Collections.emptyList();
@@ -94,6 +93,7 @@
this.faultTypes = (faultTypes == null) ? types : faultTypes;
this.nonBlocking = nonBlocking;
this.dataBinding = dataBinding;
+ this.conversationSequence = sequence;
// Register the operation with the types
for (DataType<?> d : this.inputType.getLogical()) {
d.setMetadata(NAME, this);
@@ -192,6 +192,31 @@
}
/**
+ * Sets if the operation is non-blocking
+ */
+ public void setNonBlocking(boolean nonBlocking) {
+ this.nonBlocking = nonBlocking;
+ }
+
+ /**
+ * Returns the sequence the operation is called in a conversation, {@link NO_CONVERSATION}, {@link
+ * CONVERSATION_START}, {@link CONVERSATION_CONTINUE}, or {@link CONVERSATION_END}
+ *
+ * @return the sequence the operation is called in a conversation
+ */
+ public int getConversationSequence() {
+ return conversationSequence;
+ }
+
+ /**
+ * Sets the sequence the operation is called in a conversation, {@link NO_CONVERSATION}, {@link CONVERSATION_START},
+ * {@link CONVERSATION_CONTINUE}, or {@link CONVERSATION_END}
+ */
+ public void setConversationSequence(int conversationSequence) {
+ this.conversationSequence = conversationSequence;
+ }
+
+ /**
* Returns the data binding type specified for the operation or null.
*
* @return the data binding type specified for the operation or null.
@@ -234,13 +259,6 @@
metaData.put(key, val);
}
- /**
- * Sets if the operation is non-blocking
- */
- public void setNonBlocking(boolean nonBlocking) {
- this.nonBlocking = nonBlocking;
- }
-
public String toString() {
return name;
}
@@ -273,6 +291,7 @@
if (faultTypes.size() < operation.faultTypes.size()) {
return false;
} else {
+ //noinspection ForLoopReplaceableByForEach
for (int i = 0; i < operation.faultTypes.size(); i++) {
if (!faultTypes.get(i).equals(operation.faultTypes.get(i))) {
return false;
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java Fri Nov 24 23:04:41 2006
@@ -25,7 +25,7 @@
public static final Scope STATELESS = new Scope("STATELESS");
public static final Scope REQUEST = new Scope("REQUEST");
public static final Scope SESSION = new Scope("SESSION");
- public static final Scope CONVERSATIONAL = new Scope("CONVERSATIONAL");
+ public static final Scope CONVERSATION = new Scope("CONVERSATION");
public static final Scope MODULE = new Scope("MODULE");
public static final Scope COMPOSITE = new Scope("COMPOSITE");
public static final Scope UNDEFINED = new Scope("UNDEFINED");
@@ -40,6 +40,7 @@
return scope;
}
+ @SuppressWarnings({"StringEquality"})
public boolean equals(Object o) {
if (this == o) {
return true;
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ServiceContract.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ServiceContract.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ServiceContract.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ServiceContract.java Fri Nov 24 23:04:41 2006
@@ -28,6 +28,8 @@
* @version $Rev$ $Date$
*/
public abstract class ServiceContract<T> extends ModelObject {
+ public static final long UNDEFINED = -1;
+
protected InteractionScope interactionScope;
protected boolean remotable;
protected Class<?> interfaceClass;
@@ -38,6 +40,8 @@
protected Map<String, Operation<T>> callbackOperations;
protected String dataBinding;
protected Map<String, Object> metaData;
+ protected long maxIdleTime = UNDEFINED;
+ protected long maxAge = UNDEFINED;
protected ServiceContract() {
}
@@ -168,6 +172,38 @@
public void setDataBinding(String dataBinding) {
this.dataBinding = dataBinding;
+ }
+
+ /**
+ * Returns the idle time allowed between operations in milliseconds if the service is conversational
+ *
+ * @return the idle time allowed between operations in milliseconds if the service is conversational
+ */
+ public long getMaxIdleTime() {
+ return maxIdleTime;
+ }
+
+ /**
+ * Sets the idle time allowed between operations in milliseconds if the service is conversational
+ */
+ public void setMaxIdleTime(long maxIdleTime) {
+ this.maxIdleTime = maxIdleTime;
+ }
+
+ /**
+ * Returns the maximum age a conversation may remain active in milliseconds if the service is conversational
+ *
+ * @return the maximum age a conversation may remain active in milliseconds if the service is conversational
+ */
+ public long getMaxAge() {
+ return maxAge;
+ }
+
+ /**
+ * Sets the maximum age a conversation may remain active in milliseconds if the service is conversational
+ */
+ public void setMaxAge(long maxAge) {
+ this.maxAge = maxAge;
}
/**
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/services/store/Store.java Fri Nov 24 23:04:41 2006
@@ -18,8 +18,6 @@
*/
package org.apache.tuscany.spi.services.store;
-import java.util.UUID;
-
import org.apache.tuscany.spi.component.SCAObject;
/**
@@ -38,30 +36,48 @@
* Adds the given record to the store. Implementations may choose different strategies for writing data such as
* write-through or write-behind.
*
- * @param owner
+ * @param owner the instance owner
* @param id the unique id of the record
* @param object the object representing the data to write
* @param expiration the time in milliseconds when the entry expires
* @throws StoreWriteException if an error occurs during the write operation
*/
- void insertRecord(SCAObject owner, UUID id, Object object, long expiration) throws StoreWriteException;
+ void insertRecord(SCAObject owner, String id, Object object, long expiration) throws StoreWriteException;
- void updateRecord(SCAObject owner, UUID id, Object object, long expiration) throws StoreWriteException;
+ /**
+ * Updates a given record in the store, overwriting previous information.
+ *
+ * @param owner the instance owner
+ * @param id the unique id of the record
+ * @param object the object representing the data to write
+ * @param expiration the time in milliseconds when the entry expires
+ * @throws StoreWriteException
+ */
+ void updateRecord(SCAObject owner, String id, Object object, long expiration) throws StoreWriteException;
/**
* Returns the deserialized object in the store corresponding to the given id
*
+ * @param owner the instance owner
+ * @param id the unique id of the record
* @return the deserialized object or null if one is not found
+ * @throws StoreReadException
*/
- Object readRecord(SCAObject owner, UUID id) throws StoreReadException;
+ Object readRecord(SCAObject owner, String id) throws StoreReadException;
/**
* Removes a record from the store
+ *
+ * @param owner the instance owner
+ * @param id the unique id of the record
+ * @throws StoreWriteException
*/
- void removeRecord(SCAObject owner, UUID id) throws StoreWriteException;
+ void removeRecord(SCAObject owner, String id) throws StoreWriteException;
/**
* Removes all records from the store
+ *
+ * @throws StoreWriteException
*/
void removeRecords() throws StoreWriteException;
@@ -69,6 +85,7 @@
* Initiates a recovery operation, for example during restart after a crash
*
* @param listener the listener to receive recovery callback events
+ * @throws StoreReadException
*/
void recover(RecoveryListener listener) throws StoreReadException;
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInboundInvocationHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInboundInvocationHandler.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInboundInvocationHandler.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInboundInvocationHandler.java Fri Nov 24 23:04:41 2006
@@ -39,7 +39,7 @@
if (chain.getTargetInvoker() == null) {
throw new AssertionError("No target invoker [" + chain.getOperation().getName() + "]");
}
- return chain.getTargetInvoker().invokeTarget(args);
+ return chain.getTargetInvoker().invokeTarget(args, TargetInvoker.NONE);
} catch (InvocationTargetException e) {
// the cause was thrown by the target so throw it
throw e.getCause();
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandler.java Fri Nov 24 23:04:41 2006
@@ -45,7 +45,7 @@
String name = chain.getOperation().getName();
throw new AssertionError("No target invoker [" + name + "]");
}
- return targetInvoker.invokeTarget(args);
+ return targetInvoker.invokeTarget(args, TargetInvoker.NONE);
} catch (InvocationTargetException e) {
// the cause was thrown by the target so throw it
throw e.getCause();
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/Message.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/Message.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/Message.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/Message.java Fri Nov 24 23:04:41 2006
@@ -36,6 +36,7 @@
* Sets the body of the message.
*/
void setBody(Object body);
+
/**
* Sets the target invoker to dispatch to when the message passes through the request side of the invocation chain
*/
@@ -55,12 +56,12 @@
* Adds the latest 'address' of the SCAObject where this message originated
*/
void pushFromAddress(Object fromAddress);
-
+
/**
* Returns the chain of SCAObject addresses
*/
LinkedList<Object> getCallbackRoutingChain();
-
+
/**
* Sets the chain of SCAObject addresses
*/
@@ -85,16 +86,35 @@
* Sets the correlation id of the message
*/
void setCorrelationId(Object correlationId);
-
+
/**
* Test if the message represents a fault/exception
+ *
* @return true if the message body is a fault object, false is the body is a normal payload
*/
boolean isFault();
/**
* Set the message body with a fault object. After this method is called, isFault() returns true.
+ *
* @param fault The fault object represents an exception
*/
void setBodyWithFault(Object fault);
+
+ /**
+ * Returns the conversational sequence the message is associated with, {@link TargetInvoker.NONE}, {@link
+ * TargetInvoker.START}, {@link TargetInvoker.CONTINUE}, or {@link TargetInvoker.END}
+ *
+ * @return the conversational sequence the message is associated with
+ */
+ short getConversationSequence();
+
+ /**
+ * Sets the conversational sequence the message is associated with,
+ *
+ * @param sequence {@link TargetInvoker.NONE}, {@link TargetInvoker.START}, {@link TargetInvoker.CONTINUE}, or
+ * {@link TargetInvoker.END}
+ */
+ void setConversationSequence(short sequence);
+
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/MessageImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/MessageImpl.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/MessageImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/MessageImpl.java Fri Nov 24 23:04:41 2006
@@ -26,13 +26,13 @@
* @version $Rev $Date
*/
public class MessageImpl implements Message {
-
private Object body;
private TargetInvoker invoker;
private LinkedList<Object> callbackRoutingChain;
private Object messageId;
private Object correlationId;
private boolean isFault;
+ private short conversationSequence;
public MessageImpl() {
}
@@ -68,11 +68,11 @@
public LinkedList<Object> getCallbackRoutingChain() {
return callbackRoutingChain;
}
-
+
public void setCallbackRoutingChain(LinkedList<Object> callbackRoutingChain) {
this.callbackRoutingChain = callbackRoutingChain;
}
-
+
public Object getMessageId() {
return messageId;
}
@@ -96,5 +96,21 @@
public void setBodyWithFault(Object fault) {
this.isFault = true;
this.body = fault;
+ }
+
+ public TargetInvoker getInvoker() {
+ return invoker;
+ }
+
+ public void setInvoker(TargetInvoker invoker) {
+ this.invoker = invoker;
+ }
+
+ public short getConversationSequence() {
+ return conversationSequence;
+ }
+
+ public void setConversationSequence(short conversationSequence) {
+ this.conversationSequence = conversationSequence;
}
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java Fri Nov 24 23:04:41 2006
@@ -27,14 +27,26 @@
* @version $Rev$ $Date$
*/
public interface TargetInvoker extends Cloneable {
+ /* indicates that no conversational sequence is associated with the message */
+ short NONE = 0;
+ /* indicates that the message initiates a conversation */
+ short START = 1;
+ /* indicates that the message continues a conversation */
+ short CONTINUE = 2;
+ /* indicates that the message ends a conversation */
+ short END = 3;
/**
* Invokes an operation on a target with the given payload. Used in optmized cases where messages do not need to be
* flowed such as in non-proxied wires.
*
+ * @param payload the invocation payload, typically an array of parameters
+ * @param sequence if the invocation is part of a conversation, the sequence. Valid values are {@link NONE} for
+ * non-conversational, {@link START} to begin a conversation, {@link CONTINUE} to continue a
+ * conversation, or {@link END} to end a conversation
* @throws InvocationTargetException
*/
- Object invokeTarget(final Object payload) throws InvocationTargetException;
+ Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException;
/**
* Invokes an operation on a target with the given message
Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ReferenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ReferenceTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ReferenceTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ReferenceTestCase.java Fri Nov 24 23:04:41 2006
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.spi.extension;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
+
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
@@ -55,7 +57,7 @@
public void testPrepare() throws Exception {
InboundInvocationChain chain = createMock(InboundInvocationChain.class);
- Operation<Type> operation = new Operation<Type>("test", null, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("test", null, null, null, false, null, NO_CONVERSATION);
chain.setTargetInvoker(null);
expectLastCall();
chain.getOperation();
Added: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java?view=auto&rev=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java Fri Nov 24 23:04:41 2006
@@ -0,0 +1,169 @@
+/*
+ * 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.spi.extension;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.LinkedList;
+
+import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.MessageImpl;
+
+import junit.framework.TestCase;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TargetInvokerExtensionSequenceTestCase extends TestCase {
+
+ @SuppressWarnings("unchecked")
+ public void testStart() {
+ Object from = new Object();
+ InboundWire wire = EasyMock.createMock(InboundWire.class);
+ EasyMock.replay(wire);
+ WorkContext context;
+ context = EasyMock.createMock(WorkContext.class);
+ context.setCurrentCallbackRoutingChain(EasyMock.isA(LinkedList.class));
+ EasyMock.replay(context);
+ ExecutionMonitor monitor = EasyMock.createNiceMock(ExecutionMonitor.class);
+ Target target = EasyMock.createMock(Target.class);
+ target.invokeStart("test");
+ EasyMock.replay(target);
+ Invoker invoker = new Invoker(wire, context, monitor, target);
+ Message msg = new MessageImpl();
+ msg.pushFromAddress(from);
+ msg.setBody("test");
+ msg.setConversationSequence(Invoker.START);
+ invoker.invoke(msg);
+ EasyMock.verify(wire);
+ EasyMock.verify(context);
+ EasyMock.verify(target);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testContinue() {
+ Object from = new Object();
+ InboundWire wire = EasyMock.createMock(InboundWire.class);
+ EasyMock.replay(wire);
+ WorkContext context;
+ context = EasyMock.createMock(WorkContext.class);
+ context.setCurrentCallbackRoutingChain(EasyMock.isA(LinkedList.class));
+ EasyMock.replay(context);
+ ExecutionMonitor monitor = EasyMock.createNiceMock(ExecutionMonitor.class);
+ Target target = EasyMock.createMock(Target.class);
+ target.invokeContinue("test");
+ EasyMock.replay(target);
+ Invoker invoker = new Invoker(wire, context, monitor, target);
+ Message msg = new MessageImpl();
+ msg.pushFromAddress(from);
+ msg.setBody("test");
+ msg.setConversationSequence(Invoker.CONTINUE);
+ invoker.invoke(msg);
+ EasyMock.verify(wire);
+ EasyMock.verify(context);
+ EasyMock.verify(target);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testEnd() {
+ Object from = new Object();
+ InboundWire wire = EasyMock.createMock(InboundWire.class);
+ EasyMock.replay(wire);
+ WorkContext context;
+ context = EasyMock.createMock(WorkContext.class);
+ context.setCurrentCallbackRoutingChain(EasyMock.isA(LinkedList.class));
+ EasyMock.replay(context);
+ ExecutionMonitor monitor = EasyMock.createNiceMock(ExecutionMonitor.class);
+ Target target = EasyMock.createMock(Target.class);
+ target.invokeEnd("test");
+ EasyMock.replay(target);
+ Invoker invoker = new Invoker(wire, context, monitor, target);
+ Message msg = new MessageImpl();
+ msg.pushFromAddress(from);
+ msg.setBody("test");
+ msg.setConversationSequence(Invoker.END);
+ invoker.invoke(msg);
+ EasyMock.verify(wire);
+ EasyMock.verify(context);
+ EasyMock.verify(target);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testNone() {
+ Object from = new Object();
+ InboundWire wire = EasyMock.createMock(InboundWire.class);
+ EasyMock.replay(wire);
+ WorkContext context;
+ context = EasyMock.createMock(WorkContext.class);
+ context.setCurrentCallbackRoutingChain(EasyMock.isA(LinkedList.class));
+ EasyMock.replay(context);
+ ExecutionMonitor monitor = EasyMock.createNiceMock(ExecutionMonitor.class);
+ Target target = EasyMock.createMock(Target.class);
+ target.invokeNone("test");
+ EasyMock.replay(target);
+ Invoker invoker = new Invoker(wire, context, monitor, target);
+ Message msg = new MessageImpl();
+ msg.pushFromAddress(from);
+ msg.setBody("test");
+ invoker.invoke(msg);
+ EasyMock.verify(wire);
+ EasyMock.verify(context);
+ EasyMock.verify(target);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ }
+
+ private class Invoker extends TargetInvokerExtension {
+ private Target target;
+
+ public Invoker(InboundWire wire, WorkContext workContext, ExecutionMonitor monitor,
+ TargetInvokerExtensionSequenceTestCase.Target target) {
+ super(wire, workContext, monitor);
+ this.target = target;
+ }
+
+ public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
+ if (sequence == NONE) {
+ target.invokeNone((String) payload);
+ } else if (sequence == START) {
+ target.invokeStart((String) payload);
+ } else if (sequence == CONTINUE) {
+ target.invokeContinue((String) payload);
+ } else if (sequence == END) {
+ target.invokeEnd((String) payload);
+ }
+ return null;
+ }
+ }
+
+ private interface Target {
+ void invokeStart(String msg);
+
+ void invokeContinue(String msg);
+
+ void invokeEnd(String msg);
+
+ void invokeNone(String msg);
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java Fri Nov 24 23:04:41 2006
@@ -70,7 +70,7 @@
this.target = target;
}
- public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
target.invoke((String) payload);
return null;
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/idl/java/JavaIDLUtilsTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/idl/java/JavaIDLUtilsTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/idl/java/JavaIDLUtilsTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/idl/java/JavaIDLUtilsTestCase.java Fri Nov 24 23:04:41 2006
@@ -27,6 +27,7 @@
import static org.apache.tuscany.spi.idl.java.JavaIDLUtils.findOperation;
import org.apache.tuscany.spi.model.DataType;
import org.apache.tuscany.spi.model.Operation;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
import junit.framework.TestCase;
@@ -40,7 +41,7 @@
public void testNoParamsFindMethod() {
List<DataType<Type>> types = new ArrayList<DataType<Type>>();
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
Method method = findMethod(operation, methods);
assertEquals("foo", method.getName());
assertEquals(0, method.getParameterTypes().length);
@@ -58,7 +59,7 @@
DataType<Type> type = new DataType<Type>(String.class, Object.class);
types.add(type);
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
Method method = findMethod(operation, methods);
assertEquals("foo", method.getName());
assertEquals(String.class, method.getParameterTypes()[0]);
@@ -79,7 +80,7 @@
types.add(type);
types.add(type2);
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
Method method = findMethod(operation, methods);
assertNull(method);
}
@@ -89,7 +90,7 @@
DataType<Type> type = new DataType<Type>(Integer.class, Object.class);
types.add(type);
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
Method method = findMethod(operation, methods);
assertNull(method);
}
@@ -99,7 +100,7 @@
DataType<Type> type = new DataType<Type>(Integer.class, Object.class);
types.add(type);
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
Method method = findMethod(operation, methods);
assertNull(method);
}
@@ -109,7 +110,7 @@
DataType<Type> type = new DataType<Type>(Integer.TYPE, Object.class);
types.add(type);
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
Method method = findMethod(operation, methods);
assertEquals("foo", method.getName());
assertEquals(Integer.TYPE, method.getParameterTypes()[0]);
@@ -123,7 +124,7 @@
public void testNotFoundMethod() {
- Operation<Type> operation = new Operation<Type>("not there", null, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("not there", null, null, null, false, null, NO_CONVERSATION);
assertNull(findMethod(operation, methods));
}
@@ -131,7 +132,7 @@
super.setUp();
methods = Foo.class.getMethods();
- Operation<Type> operation = new Operation<Type>("foo", null, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", null, null, null, false, null, NO_CONVERSATION);
operations = new ArrayList<Operation<?>>();
operations.add(operation);
@@ -139,7 +140,7 @@
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
DataType<Type> type = new DataType<Type>(String.class, Object.class);
types.add(type);
- operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
operations.add(operation);
types = new ArrayList<DataType<Type>>();
@@ -148,21 +149,21 @@
types.add(type);
types.add(type2);
inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
operations.add(operation);
types = new ArrayList<DataType<Type>>();
type = new DataType<Type>(Integer.class, Object.class);
types.add(type);
inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
operations.add(operation);
types = new ArrayList<DataType<Type>>();
type = new DataType<Type>(Integer.TYPE, Object.class);
types.add(type);
inputType = new DataType<List<DataType<Type>>>(Object[].class, types);
- operation = new Operation<Type>("foo", inputType, null, null, false, null);
+ operation = new Operation<Type>("foo", inputType, null, null, false, null, NO_CONVERSATION);
operations.add(operation);
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ServiceContractTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ServiceContractTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ServiceContractTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ServiceContractTestCase.java Fri Nov 24 23:04:41 2006
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.spi.model;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
+
import java.util.Map;
import java.util.HashMap;
import java.lang.reflect.Type;
@@ -32,7 +34,7 @@
@SuppressWarnings("unchecked")
public void testAddOperation() throws Exception {
ServiceContract<Type> contract = new TestContract();
- Operation<Type> operation = new Operation<Type>("foo", null, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", null, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> ops = new HashMap<String, Operation<Type>>();
ops.put("foo", operation);
contract.setOperations(ops);
@@ -42,7 +44,7 @@
public void testAddCallbackOperation() throws Exception {
ServiceContract<Type> contract = new TestContract();
- Operation<Type> operation = new Operation<Type>("foo", null, null, null, false, null);
+ Operation<Type> operation = new Operation<Type>("foo", null, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> ops = new HashMap<String, Operation<Type>>();
ops.put("foo", operation);
contract.setCallbackOperations(ops);
Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandlerTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandlerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractOutboundInvocationHandlerTestCase.java Fri Nov 24 23:04:41 2006
@@ -38,7 +38,7 @@
private class MockInvoker implements TargetInvoker {
- public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
assertEquals("foo", Array.get(payload, 0));
return "response";
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/ContractCompatibilityTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/ContractCompatibilityTestCase.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/ContractCompatibilityTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/ContractCompatibilityTestCase.java Fri Nov 24 23:04:41 2006
@@ -30,6 +30,7 @@
import org.apache.tuscany.spi.model.ComponentDefinition;
import org.apache.tuscany.spi.model.DataType;
import org.apache.tuscany.spi.model.Operation;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
import org.apache.tuscany.spi.model.ReferenceDefinition;
import org.apache.tuscany.spi.model.ReferenceTarget;
import org.apache.tuscany.spi.model.ServiceContract;
@@ -54,12 +55,12 @@
public void testBasic() throws Exception {
ServiceContract<Type> source = new MockContract<Type>("FooContract");
- Operation<Type> opSource1 = new Operation<Type>("op1", null, null, null, false, null);
+ Operation<Type> opSource1 = new Operation<Type>("op1", null, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> sourceOperations = new HashMap<String, Operation<Type>>();
sourceOperations.put("op1", opSource1);
source.setOperations(sourceOperations);
ServiceContract<Type> target = new MockContract<Type>("FooContract");
- Operation<Type> opSource2 = new Operation<Type>("op1", null, null, null, false, null);
+ Operation<Type> opSource2 = new Operation<Type>("op1", null, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> targetOperations = new HashMap<String, Operation<Type>>();
targetOperations.put("op1", opSource2);
target.setOperations(targetOperations);
@@ -68,12 +69,12 @@
public void testBasicIncompatibleOperationNames() throws Exception {
ServiceContract<Type> source = new MockContract<Type>("FooContract");
- Operation<Type> opSource1 = new Operation<Type>("op1", null, null, null, false, null);
+ Operation<Type> opSource1 = new Operation<Type>("op1", null, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> sourceOperations = new HashMap<String, Operation<Type>>();
sourceOperations.put("op1", opSource1);
source.setOperations(sourceOperations);
ServiceContract<Type> target = new MockContract<Type>("FooContract");
- Operation<Type> opSource2 = new Operation<Type>("op2", null, null, null, false, null);
+ Operation<Type> opSource2 = new Operation<Type>("op2", null, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> targetOperations = new HashMap<String, Operation<Type>>();
targetOperations.put("op2", opSource2);
target.setOperations(targetOperations);
@@ -90,7 +91,7 @@
List<DataType<Type>> sourceInputTypes = new ArrayList<DataType<Type>>();
sourceInputTypes.add(new DataType<Type>(Object.class, Object.class));
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(String.class, sourceInputTypes);
- Operation<Type> opSource1 = new Operation<Type>("op1", inputType, null, null, false, null);
+ Operation<Type> opSource1 = new Operation<Type>("op1", inputType, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> sourceOperations = new HashMap<String, Operation<Type>>();
sourceOperations.put("op1", opSource1);
source.setOperations(sourceOperations);
@@ -101,7 +102,8 @@
DataType<List<DataType<Type>>> targetInputType =
new DataType<List<DataType<Type>>>(String.class, targetInputTypes);
- Operation<Type> opTarget = new Operation<Type>("op1", targetInputType, null, null, false, null);
+ Operation<Type> opTarget =
+ new Operation<Type>("op1", targetInputType, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> targetOperations = new HashMap<String, Operation<Type>>();
targetOperations.put("op1", opTarget);
target.setOperations(targetOperations);
@@ -114,7 +116,7 @@
List<DataType<Type>> sourceInputTypes = new ArrayList<DataType<Type>>();
sourceInputTypes.add(new DataType<Type>(Integer.class, Integer.class));
DataType<List<DataType<Type>>> inputType = new DataType<List<DataType<Type>>>(String.class, sourceInputTypes);
- Operation<Type> opSource1 = new Operation<Type>("op1", inputType, null, null, false, null);
+ Operation<Type> opSource1 = new Operation<Type>("op1", inputType, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> sourceOperations = new HashMap<String, Operation<Type>>();
sourceOperations.put("op1", opSource1);
source.setOperations(sourceOperations);
@@ -125,7 +127,8 @@
DataType<List<DataType<Type>>> targetInputType =
new DataType<List<DataType<Type>>>(String.class, targetInputTypes);
- Operation<Type> opTarget = new Operation<Type>("op1", targetInputType, null, null, false, null);
+ Operation<Type> opTarget =
+ new Operation<Type>("op1", targetInputType, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> targetOperations = new HashMap<String, Operation<Type>>();
targetOperations.put("op1", opTarget);
target.setOperations(targetOperations);
@@ -166,14 +169,16 @@
public void testOutputTypes() throws Exception {
ServiceContract<Type> source = new MockContract<Type>("FooContract");
DataType<Type> sourceOutputType = new DataType<Type>(String.class, String.class);
- Operation<Type> opSource1 = new Operation<Type>("op1", null, sourceOutputType, null, false, null);
+ Operation<Type> opSource1 =
+ new Operation<Type>("op1", null, sourceOutputType, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> sourceOperations = new HashMap<String, Operation<Type>>();
sourceOperations.put("op1", opSource1);
source.setOperations(sourceOperations);
ServiceContract<Type> target = new MockContract<Type>("FooContract");
DataType<Type> targetOutputType = new DataType<Type>(String.class, String.class);
- Operation<Type> opTarget = new Operation<Type>("op1", null, targetOutputType, null, false, null);
+ Operation<Type> opTarget =
+ new Operation<Type>("op1", null, targetOutputType, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> targetOperations = new HashMap<String, Operation<Type>>();
targetOperations.put("op1", opTarget);
target.setOperations(targetOperations);
@@ -203,14 +208,16 @@
public void testIncompatibleOutputTypes() throws Exception {
ServiceContract<Type> source = new MockContract<Type>("FooContract");
DataType<Type> sourceOutputType = new DataType<Type>(String.class, String.class);
- Operation<Type> opSource1 = new Operation<Type>("op1", null, sourceOutputType, null, false, null);
+ Operation<Type> opSource1 =
+ new Operation<Type>("op1", null, sourceOutputType, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> sourceOperations = new HashMap<String, Operation<Type>>();
sourceOperations.put("op1", opSource1);
source.setOperations(sourceOperations);
ServiceContract<Type> target = new MockContract<Type>("FooContract");
DataType<Type> targetOutputType = new DataType<Type>(Integer.class, Integer.class);
- Operation<Type> opTarget = new Operation<Type>("op1", null, targetOutputType, null, false, null);
+ Operation<Type> opTarget =
+ new Operation<Type>("op1", null, targetOutputType, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> targetOperations = new HashMap<String, Operation<Type>>();
targetOperations.put("op1", opTarget);
target.setOperations(targetOperations);
@@ -227,7 +234,8 @@
DataType<Type> sourceFaultType = new DataType<Type>(String.class, String.class);
List<DataType<Type>> sourceFaultTypes = new ArrayList<DataType<Type>>();
sourceFaultTypes.add(0, sourceFaultType);
- Operation<Type> opSource1 = new Operation<Type>("op1", null, null, sourceFaultTypes, false, null);
+ Operation<Type> opSource1 =
+ new Operation<Type>("op1", null, null, sourceFaultTypes, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> sourceOperations = new HashMap<String, Operation<Type>>();
sourceOperations.put("op1", opSource1);
source.setOperations(sourceOperations);
@@ -237,7 +245,8 @@
List<DataType<Type>> targetFaultTypes = new ArrayList<DataType<Type>>();
targetFaultTypes.add(0, targetFaultType);
- Operation<Type> opTarget = new Operation<Type>("op1", null, null, targetFaultTypes, false, null);
+ Operation<Type> opTarget =
+ new Operation<Type>("op1", null, null, targetFaultTypes, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> targetOperations = new HashMap<String, Operation<Type>>();
targetOperations.put("op1", opTarget);
target.setOperations(targetOperations);
@@ -249,13 +258,14 @@
DataType<Type> sourceFaultType = new DataType<Type>(String.class, String.class);
List<DataType<Type>> sourceFaultTypes = new ArrayList<DataType<Type>>();
sourceFaultTypes.add(0, sourceFaultType);
- Operation<Type> opSource1 = new Operation<Type>("op1", null, null, sourceFaultTypes, false, null);
+ Operation<Type> opSource1 =
+ new Operation<Type>("op1", null, null, sourceFaultTypes, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> sourceOperations = new HashMap<String, Operation<Type>>();
sourceOperations.put("op1", opSource1);
source.setOperations(sourceOperations);
ServiceContract<Type> target = new MockContract<Type>("FooContract");
- Operation<Type> opTarget = new Operation<Type>("op1", null, null, null, false, null);
+ Operation<Type> opTarget = new Operation<Type>("op1", null, null, null, false, null, NO_CONVERSATION);
Map<String, Operation<Type>> targetOperations = new HashMap<String, Operation<Type>>();
targetOperations.put("op1", opTarget);
target.setOperations(targetOperations);
Modified: incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiInvoker.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiInvoker.java (original)
+++ incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiInvoker.java Fri Nov 24 23:04:41 2006
@@ -40,7 +40,7 @@
public Message invoke(Message msg) throws InvocationRuntimeException {
try {
- Object resp = invokeTarget(msg.getBody());
+ Object resp = invokeTarget(msg.getBody(), TargetInvoker.NONE);
msg.setBody(resp);
} catch (InvocationTargetException e) {
msg.setBody(e.getCause());
@@ -48,7 +48,7 @@
return msg;
}
- public Object invokeTarget(Object payload) throws InvocationTargetException {
+ public Object invokeTarget(Object payload, final short sequence) throws InvocationTargetException {
try {
return remoteMethod.invoke(proxy, (Object[]) payload);
} catch (IllegalAccessException e) {
Modified: incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2AsyncTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2AsyncTargetInvoker.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2AsyncTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2AsyncTargetInvoker.java Fri Nov 24 23:04:41 2006
@@ -20,17 +20,17 @@
import java.lang.reflect.InvocationTargetException;
import java.util.LinkedList;
-
import javax.xml.namespace.QName;
+import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+import org.apache.tuscany.spi.wire.Message;
+
import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.OperationClient;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
-import org.apache.tuscany.spi.wire.InvocationRuntimeException;
-import org.apache.tuscany.spi.wire.Message;
public class Axis2AsyncTargetInvoker extends Axis2TargetInvoker {
@@ -45,13 +45,14 @@
super(serviceClient, wsdlOperationName, options, soapFactory);
}
- public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
throw new InvocationTargetException(new InvocationRuntimeException("Operation not supported"));
}
- private Object invokeTarget(final Object payload, LinkedList<Object> callbackRoutingChain) throws InvocationTargetException {
+ private Object invokeTarget(final Object payload, LinkedList<Object> callbackRoutingChain)
+ throws InvocationTargetException {
try {
- Object[] args = (Object[])payload;
+ Object[] args = (Object[]) payload;
OperationClient operationClient = createOperationClient(args);
callbackInvoker.setCallbackRoutingChain(callbackRoutingChain);
Axis2ReferenceCallback callback = new Axis2ReferenceCallback(callbackInvoker);
Modified: incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2OneWayTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2OneWayTargetInvoker.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2OneWayTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2OneWayTargetInvoker.java Fri Nov 24 23:04:41 2006
@@ -19,17 +19,17 @@
package org.apache.tuscany.binding.axis2;
import java.lang.reflect.InvocationTargetException;
-
import javax.xml.namespace.QName;
+import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+import org.apache.tuscany.spi.wire.Message;
+
import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.OperationClient;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
-import org.apache.tuscany.spi.wire.InvocationRuntimeException;
-import org.apache.tuscany.spi.wire.Message;
public class Axis2OneWayTargetInvoker extends Axis2TargetInvoker {
@@ -43,9 +43,9 @@
super(serviceClient, wsdlOperationName, options, soapFactory);
}
- public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
try {
- Object[] args = (Object[])payload;
+ Object[] args = (Object[]) payload;
OperationClient operationClient = createOperationClient(args);
operationClient.execute(false);
@@ -61,7 +61,7 @@
public Message invoke(Message msg) throws InvocationRuntimeException {
try {
- Object resp = invokeTarget(msg.getBody());
+ Object resp = invokeTarget(msg.getBody(), NONE);
msg.setBody(resp);
} catch (Throwable e) {
msg.setBodyWithFault(e);
Modified: incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallback.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallback.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallback.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallback.java Fri Nov 24 23:04:41 2006
@@ -25,6 +25,7 @@
import org.apache.axis2.client.async.Callback;
import org.apache.axis2.context.MessageContext;
import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+import org.apache.tuscany.spi.wire.TargetInvoker;
public class Axis2ReferenceCallback extends Callback {
@@ -38,7 +39,7 @@
MessageContext responseMC = result.getResponseMessageContext();
OMElement responseOM = responseMC.getEnvelope().getBody().getFirstElement();
try {
- targetInvoker.invokeTarget(new Object[] {responseOM});
+ targetInvoker.invokeTarget(new Object[] {responseOM}, TargetInvoker.NONE);
} catch (InvocationTargetException e) {
// FIXME what is the appropriate exception here?
throw new InvocationRuntimeException(e);
Modified: incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java Fri Nov 24 23:04:41 2006
@@ -28,23 +28,23 @@
import org.apache.tuscany.spi.wire.TargetInvoker;
public class Axis2ReferenceCallbackTargetInvoker implements TargetInvoker {
-
+
private Operation operation;
private InboundWire inboundWire;
private LinkedList<Object> callbackRoutingChain;
private boolean cacheable;
Axis2CallbackInvocationHandler invocationHandler;
-
+
public Axis2ReferenceCallbackTargetInvoker(Operation operation,
- InboundWire inboundWire,
- Axis2CallbackInvocationHandler invocationHandler) {
+ InboundWire inboundWire,
+ Axis2CallbackInvocationHandler invocationHandler) {
this.operation = operation;
this.inboundWire = inboundWire;
this.invocationHandler = invocationHandler;
}
- public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
Object[] args;
if (payload != null && !payload.getClass().isArray()) {
args = new Object[]{payload};
@@ -53,15 +53,15 @@
}
try {
return invocationHandler.invoke(operation, args, callbackRoutingChain);
- } catch(Throwable t) {
+ } catch (Throwable t) {
t.printStackTrace();
throw new InvocationTargetException(t);
}
}
-
+
public Message invoke(Message msg) throws InvocationRuntimeException {
try {
- Object resp = invokeTarget(msg.getBody());
+ Object resp = invokeTarget(msg.getBody(), NONE);
msg.setBody(resp);
} catch (InvocationTargetException e) {
msg.setBodyWithFault(e.getCause());
@@ -92,7 +92,7 @@
invoker.invocationHandler = this.invocationHandler;
return invoker;
}
-
+
public void setCallbackRoutingChain(LinkedList<Object> callbackRoutingChain) {
this.callbackRoutingChain = callbackRoutingChain;
}
Modified: incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Service.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Service.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Service.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Service.java Fri Nov 24 23:04:41 2006
@@ -180,7 +180,7 @@
if (chain.getTargetInvoker() == null) {
throw new AssertionError("No target invoker [" + chain.getOperation().getName() + "]");
}
- return chain.getTargetInvoker().invokeTarget(args);
+ return chain.getTargetInvoker().invokeTarget(args, TargetInvoker.NONE);
} catch (InvocationTargetException e) {
// the cause was thrown by the target so throw it
throw e;
Modified: incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceCallbackTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceCallbackTargetInvoker.java?view=diff&rev=479093&r1=479092&r2=479093
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceCallbackTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceCallbackTargetInvoker.java Fri Nov 24 23:04:41 2006
@@ -20,6 +20,10 @@
import java.lang.reflect.InvocationTargetException;
+import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axis2.AxisFault;
@@ -28,10 +32,6 @@
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.util.Utils;
import org.apache.tuscany.binding.axis2.Axis2Service.InvocationContext;
-import org.apache.tuscany.binding.axis2.Axis2AsyncTargetInvoker;
-import org.apache.tuscany.spi.wire.InvocationRuntimeException;
-import org.apache.tuscany.spi.wire.Message;
-import org.apache.tuscany.spi.wire.TargetInvoker;
public class Axis2ServiceCallbackTargetInvoker implements TargetInvoker {
@@ -41,10 +41,10 @@
this.service = service;
}
- public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
throw new InvocationTargetException(new InvocationRuntimeException("Operation not supported"));
}
-
+
private Object invokeTarget(final Object payload, Object correlationId) throws InvocationTargetException {
try {
// Use current correlation id as index to retrieve inv context
@@ -52,12 +52,12 @@
MessageContext outMC = Utils.createOutMessageContext(invCtx.inMessageContext);
outMC.getOperationContext().addMessageContext(outMC);
-
- OMElement responseOM = null;
+
+ OMElement responseOM;
if (payload != null && !payload.getClass().isArray()) {
- responseOM = (OMElement)payload;
+ responseOM = (OMElement) payload;
} else {
- responseOM = (OMElement)((Object[])payload)[0];
+ responseOM = (OMElement) ((Object[]) payload)[0];
}
SOAPEnvelope soapEnvelope = invCtx.soapFactory.getDefaultEnvelope();
soapEnvelope.getBody().addChild(responseOM);
@@ -65,15 +65,16 @@
outMC.getOperationContext().setProperty(Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);
AxisEngine engine =
- new AxisEngine(invCtx.inMessageContext.getOperationContext().getServiceContext().getConfigurationContext());
+ new AxisEngine(
+ invCtx.inMessageContext.getOperationContext().getServiceContext().getConfigurationContext());
engine.send(outMC);
-
+
invCtx.doneSignal.countDown();
service.removeMapping(correlationId);
} catch (AxisFault e) {
throw new InvocationTargetException(e);
- } catch(Throwable t) {
+ } catch (Throwable t) {
throw new Axis2BindingRunTimeException(t);
}
@@ -96,7 +97,7 @@
public Axis2ServiceCallbackTargetInvoker clone() throws CloneNotSupportedException {
try {
- return (Axis2ServiceCallbackTargetInvoker)super.clone();
+ return (Axis2ServiceCallbackTargetInvoker) super.clone();
} catch (CloneNotSupportedException e) {
// will not happen
return null;
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org