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 10:22:06 UTC
svn commit: r479109 - in /incubator/tuscany/java/sca/kernel:
core/src/main/java/org/apache/tuscany/core/builder/
core/src/main/java/org/apache/tuscany/core/component/scope/
core/src/main/java/org/apache/tuscany/core/databinding/impl/
core/src/main/java...
Author: jmarino
Date: Sat Nov 25 01:22:05 2006
New Revision: 479109
URL: http://svn.apache.org/viewvc?view=rev&rev=479109
Log:
move WirePostProcessor to spi/wire; add post processor for conversational wires; add conversational interceptors
Added:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationEndInterceptor.java (with props)
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptor.java (with props)
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationWirePostProcessor.java (with props)
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationEndInterceptorTestCase.java (with props)
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptorTestCase.java (with props)
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationWirePostProcessorTestCase.java (with props)
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/PostProcessingException.java (contents, props changed)
- copied, changed from r478441, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/PostProcessingException.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessor.java (contents, props changed)
- copied, changed from r478441, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessor.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorExtension.java (contents, props changed)
- copied, changed from r478441, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorExtension.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorRegistry.java (contents, props changed)
- copied, changed from r478441, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java
Removed:
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/PostProcessingException.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessor.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorExtension.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorPostProcessTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImplTestCase.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=479109&r1=479108&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Sat Nov 25 01:22:05 2006
@@ -27,7 +27,7 @@
import org.apache.tuscany.spi.annotation.Autowire;
import org.apache.tuscany.spi.builder.BuilderConfigException;
import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.builder.WirePostProcessorRegistry;
+import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.ComponentRuntimeException;
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImpl.java?view=diff&rev=479109&r1=479108&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImpl.java Sat Nov 25 01:22:05 2006
@@ -21,8 +21,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.tuscany.spi.builder.WirePostProcessor;
-import org.apache.tuscany.spi.builder.WirePostProcessorRegistry;
+import org.apache.tuscany.spi.wire.WirePostProcessor;
+import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
import org.apache.tuscany.spi.wire.InboundWire;
import org.apache.tuscany.spi.wire.OutboundWire;
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java?view=diff&rev=479109&r1=479108&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java Sat Nov 25 01:22:05 2006
@@ -107,6 +107,28 @@
}
}
+ public Object getAssociatedInstance(AtomicComponent component) throws TargetException {
+ String conversationID = (String) workContext.getIdentifier(Scope.CONVERSATION);
+ if (conversationID == null) {
+ TargetException e = new TargetException("Conversation id not set in context");
+ e.setIdentifier(component.getName());
+ throw e;
+ }
+ try {
+ workContext.setCurrentAtomicComponent(component);
+ Object instance = nonDurableStore.readRecord(component, conversationID);
+ if (instance != null) {
+ return instance;
+ } else {
+ throw new TargetNotFoundException(component.getName());
+ }
+ } catch (StoreReadException e) {
+ throw new TargetException(e);
+ } finally {
+ workContext.setCurrentAtomicComponent(null);
+ }
+ }
+
public void persistNew(AtomicComponent component, String id, Object instance, long expiration)
throws PersistenceException {
try {
@@ -130,28 +152,6 @@
nonDurableStore.removeRecord(component, id);
} catch (StoreWriteException e) {
throw new PersistenceException(e);
- }
- }
-
- public Object getAssociatedInstance(AtomicComponent component) throws TargetException {
- String conversationID = (String) workContext.getIdentifier(Scope.CONVERSATION);
- if (conversationID == null) {
- TargetException e = new TargetException("Conversation id not set in context");
- e.setIdentifier(component.getName());
- throw e;
- }
- try {
- workContext.setCurrentAtomicComponent(component);
- Object instance = nonDurableStore.readRecord(component, conversationID);
- if (instance != null) {
- return instance;
- } else {
- throw new TargetNotFoundException(component.getName());
- }
- } catch (StoreReadException e) {
- throw new TargetException(e);
- } finally {
- workContext.setCurrentAtomicComponent(null);
}
}
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java?view=diff&rev=479109&r1=479108&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java Sat Nov 25 01:22:05 2006
@@ -25,7 +25,7 @@
import org.osoa.sca.annotations.Constructor;
import org.apache.tuscany.spi.annotation.Autowire;
-import org.apache.tuscany.spi.builder.WirePostProcessorExtension;
+import org.apache.tuscany.spi.wire.WirePostProcessorExtension;
import org.apache.tuscany.spi.component.Reference;
import org.apache.tuscany.spi.component.SCAObject;
import org.apache.tuscany.spi.databinding.Mediator;
Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationEndInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationEndInterceptor.java?view=auto&rev=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationEndInterceptor.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationEndInterceptor.java Sat Nov 25 01:22:05 2006
@@ -0,0 +1,50 @@
+/*
+ * 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.core.wire;
+
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * Placed on an invocation chain for a service operation that ends a conversation.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ConversationEndInterceptor implements Interceptor {
+ private Interceptor next;
+
+ public Interceptor getNext() {
+ return next;
+ }
+
+ public void setNext(Interceptor next) {
+ this.next = next;
+ }
+
+ public boolean isOptimizable() {
+ return false;
+ }
+
+ public Message invoke(Message msg) {
+ msg.setConversationSequence(TargetInvoker.END);
+ return next.invoke(msg);
+ }
+
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationEndInterceptor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationEndInterceptor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptor.java?view=auto&rev=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptor.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptor.java Sat Nov 25 01:22:05 2006
@@ -0,0 +1,60 @@
+/*
+ * 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.core.wire;
+
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * An interceptor placed on the client side of an invocation chain to handle setting of conversational context.
+ * Specifically, this interceptor tracks the conversational sequence, for example if the conversation has started or a
+ * new one needs to be initiated.
+ * <p/>
+ * Note that this interceptor must be shared accross all invocation chains for a service reference but it may not be
+ * shared accross client instances as it maintains state specific to the client.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ConversationSequenceInterceptor implements Interceptor {
+ private boolean conversationStarted;
+ private Interceptor next;
+
+ public Interceptor getNext() {
+ return next;
+ }
+
+ public void setNext(Interceptor next) {
+ this.next = next;
+ }
+
+ public boolean isOptimizable() {
+ return false;
+ }
+
+ public Message invoke(Message msg) {
+ if (conversationStarted) {
+ msg.setConversationSequence(TargetInvoker.CONTINUE);
+ } else {
+ conversationStarted = true;
+ msg.setConversationSequence(TargetInvoker.START);
+ }
+ return next.invoke(msg);
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationWirePostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationWirePostProcessor.java?view=auto&rev=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationWirePostProcessor.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationWirePostProcessor.java Sat Nov 25 01:22:05 2006
@@ -0,0 +1,58 @@
+/*
+ * 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.core.wire;
+
+import java.util.Map;
+
+import org.apache.tuscany.spi.model.InteractionScope;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.wire.WirePostProcessorExtension;
+
+/**
+ * Adds conversation-related interceptors to service invocations chains. A {@link ConversationEndInterceptor} is
+ * inserted on a chain for an operation marked as ending conversation. A {@link ConversationSequenceInterceptor} is
+ * inserted into all other invocation chains.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ConversationWirePostProcessor extends WirePostProcessorExtension {
+
+ public void process(OutboundWire source, InboundWire target) {
+ if (!InteractionScope.CONVERSATIONAL.equals(source.getServiceContract().getInteractionScope())) {
+ return;
+ }
+ // the sequence interceptor is shared across all chans for a service
+ ConversationSequenceInterceptor sequenceInterceptor = new ConversationSequenceInterceptor();
+ for (Map.Entry<Operation<?>, OutboundInvocationChain> entry : source.getInvocationChains().entrySet()) {
+ int sequence = entry.getKey().getConversationSequence();
+ if (sequence == Operation.CONVERSATION_END) {
+ entry.getValue().addInterceptor(0, new ConversationEndInterceptor());
+ } else if (sequence == Operation.CONVERSATION_CONTINUE) {
+ entry.getValue().addInterceptor(0, sequenceInterceptor);
+ }
+ }
+ }
+
+ public void process(InboundWire source, OutboundWire target) {
+ // do nothing
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationWirePostProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/ConversationWirePostProcessor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorPostProcessTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorPostProcessTestCase.java?view=diff&rev=479109&r1=479108&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorPostProcessTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorPostProcessTestCase.java Sat Nov 25 01:22:05 2006
@@ -21,7 +21,7 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.tuscany.spi.builder.WirePostProcessorRegistry;
+import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.model.Operation;
import org.apache.tuscany.spi.model.ServiceContract;
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImplTestCase.java?view=diff&rev=479109&r1=479108&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WirePostProcessorRegistryImplTestCase.java Sat Nov 25 01:22:05 2006
@@ -18,8 +18,8 @@
*/
package org.apache.tuscany.core.builder;
-import org.apache.tuscany.spi.builder.WirePostProcessor;
-import org.apache.tuscany.spi.builder.WirePostProcessorRegistry;
+import org.apache.tuscany.spi.wire.WirePostProcessor;
+import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
import org.apache.tuscany.spi.wire.InboundWire;
import org.apache.tuscany.spi.wire.OutboundWire;
Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationEndInterceptorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationEndInterceptorTestCase.java?view=auto&rev=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationEndInterceptorTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationEndInterceptorTestCase.java Sat Nov 25 01:22:05 2006
@@ -0,0 +1,61 @@
+/*
+ * 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.core.wire;
+
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.MessageImpl;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ConversationEndInterceptorTestCase extends TestCase {
+
+ public void testInvoke() {
+ Interceptor next = new MockEndInterceptor();
+ ConversationEndInterceptor interceptor = new ConversationEndInterceptor();
+ interceptor.setNext(next);
+ Message msg = new MessageImpl();
+ interceptor.invoke(msg);
+ }
+
+
+ private class MockEndInterceptor implements Interceptor {
+
+ public Message invoke(Message msg) {
+ assertEquals(TargetInvoker.END, msg.getConversationSequence());
+ return msg;
+ }
+
+ public void setNext(Interceptor next) {
+ }
+
+ public Interceptor getNext() {
+ return null;
+ }
+
+ public boolean isOptimizable() {
+ return false;
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationEndInterceptorTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationEndInterceptorTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptorTestCase.java?view=auto&rev=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptorTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptorTestCase.java Sat Nov 25 01:22:05 2006
@@ -0,0 +1,92 @@
+/*
+ * 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.core.wire;
+
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.MessageImpl;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ConversationSequenceInterceptorTestCase extends TestCase {
+
+ public void testStartSequence() {
+ Interceptor next = new MockStartInterceptor();
+ ConversationSequenceInterceptor interceptor = new ConversationSequenceInterceptor();
+ interceptor.setNext(next);
+ Message msg = new MessageImpl();
+ interceptor.invoke(msg);
+ }
+
+ public void testContinueSequence() {
+ Interceptor next = new MockStartInterceptor();
+ Interceptor next2 = new MockContinueInterceptor();
+ ConversationSequenceInterceptor interceptor = new ConversationSequenceInterceptor();
+ // set up conversation
+ interceptor.setNext(next);
+ Message msg = new MessageImpl();
+ interceptor.invoke(msg);
+ // swap interceptor to test continue
+ interceptor.setNext(next2);
+ interceptor.invoke(msg);
+ }
+
+ private class MockStartInterceptor implements Interceptor {
+
+ public Message invoke(Message msg) {
+ assertEquals(TargetInvoker.START, msg.getConversationSequence());
+ return msg;
+ }
+
+ public void setNext(Interceptor next) {
+ }
+
+ public Interceptor getNext() {
+ return null;
+ }
+
+ public boolean isOptimizable() {
+ return false;
+ }
+ }
+
+ private class MockContinueInterceptor implements Interceptor {
+
+ public Message invoke(Message msg) {
+ assertEquals(TargetInvoker.CONTINUE, msg.getConversationSequence());
+ return msg;
+ }
+
+ public void setNext(Interceptor next) {
+ }
+
+ public Interceptor getNext() {
+ return null;
+ }
+
+ public boolean isOptimizable() {
+ return false;
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptorTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationSequenceInterceptorTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationWirePostProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationWirePostProcessorTestCase.java?view=auto&rev=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationWirePostProcessorTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationWirePostProcessorTestCase.java Sat Nov 25 01:22:05 2006
@@ -0,0 +1,84 @@
+/*
+ * 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.core.wire;
+
+import java.lang.reflect.Type;
+
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.model.InteractionScope;
+import org.apache.tuscany.spi.wire.OutboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundWire;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ConversationWirePostProcessorTestCase extends TestCase {
+ private ConversationWirePostProcessor processor;
+
+ public void testOutboundToInboundEndConversation() {
+ OutboundWire wire = new OutboundWireImpl();
+ ServiceContract contract = new MockServiceContract();
+ contract.setInteractionScope(InteractionScope.CONVERSATIONAL);
+ wire.setServiceContract(contract);
+ Operation<Type> operation = new Operation<Type>("foo", null, null, null);
+ operation.setConversationSequence(Operation.CONVERSATION_END);
+ OutboundInvocationChain chain = new OutboundInvocationChainImpl(operation);
+ wire.addInvocationChain(operation, chain);
+ processor.process(wire, null);
+ assertTrue(chain.getHeadInterceptor() instanceof ConversationEndInterceptor);
+ }
+
+ public void testOutboundToInboundContinueConversation() {
+ OutboundWire wire = new OutboundWireImpl();
+ ServiceContract contract = new MockServiceContract();
+ contract.setInteractionScope(InteractionScope.CONVERSATIONAL);
+ wire.setServiceContract(contract);
+ Operation<Type> operation = new Operation<Type>("foo", null, null, null);
+ operation.setConversationSequence(Operation.CONVERSATION_CONTINUE);
+ OutboundInvocationChain chain = new OutboundInvocationChainImpl(operation);
+ wire.addInvocationChain(operation, chain);
+ processor.process(wire, null);
+ assertTrue(chain.getHeadInterceptor() instanceof ConversationSequenceInterceptor);
+ }
+
+ public void testOutboundToInboundNoConversation() {
+ OutboundWire wire = new OutboundWireImpl();
+ ServiceContract contract = new MockServiceContract();
+ contract.setInteractionScope(InteractionScope.NONCONVERSATIONAL);
+ wire.setServiceContract(contract);
+ Operation<Type> operation = new Operation<Type>("foo", null, null, null);
+ operation.setConversationSequence(Operation.NO_CONVERSATION);
+ OutboundInvocationChain chain = new OutboundInvocationChainImpl(operation);
+ wire.addInvocationChain(operation, chain);
+ processor.process(wire, null);
+ assertNull(chain.getHeadInterceptor());
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ processor = new ConversationWirePostProcessor();
+ }
+
+ private class MockServiceContract extends ServiceContract<Object> {
+
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationWirePostProcessorTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ConversationWirePostProcessorTestCase.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=479109&r1=479108&r2=479109
==============================================================================
--- 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 Sat Nov 25 01:22:05 2006
@@ -33,7 +33,6 @@
*/
public class Operation<T> {
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;
@@ -76,7 +75,7 @@
* @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}
+ * CONVERSATION_CONTINUE}, or {@link CONVERSATION_END}
*/
public Operation(final String name,
final DataType<List<DataType<T>>> inputType,
@@ -200,7 +199,7 @@
/**
* Returns the sequence the operation is called in a conversation, {@link NO_CONVERSATION}, {@link
- * CONVERSATION_START}, {@link CONVERSATION_CONTINUE}, or {@link CONVERSATION_END}
+ * CONVERSATION_CONTINUE}, or {@link CONVERSATION_END}
*
* @return the sequence the operation is called in a conversation
*/
@@ -209,8 +208,8 @@
}
/**
- * Sets the sequence the operation is called in a conversation, {@link NO_CONVERSATION}, {@link CONVERSATION_START},
- * {@link CONVERSATION_CONTINUE}, or {@link CONVERSATION_END}
+ * Sets the sequence the operation is called in a conversation, {@link NO_CONVERSATION}, {@link
+ * CONVERSATION_CONTINUE}, or {@link CONVERSATION_END}
*/
public void setConversationSequence(int conversationSequence) {
this.conversationSequence = conversationSequence;
Copied: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/PostProcessingException.java (from r478441, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/PostProcessingException.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/PostProcessingException.java?view=diff&rev=479109&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/PostProcessingException.java&r1=478441&p2=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/PostProcessingException.java&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/PostProcessingException.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/PostProcessingException.java Sat Nov 25 01:22:05 2006
@@ -16,7 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.spi.builder;
+package org.apache.tuscany.spi.wire;
+
+import org.apache.tuscany.spi.builder.BuilderException;
/**
* Denotes an error during post-processing of a wire
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/PostProcessingException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/PostProcessingException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessor.java (from r478441, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessor.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessor.java?view=diff&rev=479109&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessor.java&r1=478441&p2=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessor.java&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessor.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessor.java Sat Nov 25 01:22:05 2006
@@ -16,10 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.spi.builder;
-
-import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.spi.wire.OutboundWire;
+package org.apache.tuscany.spi.wire;
/**
* Implementations are called after inbound and outbound wires are decorated with policy and before they are connected.
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorExtension.java (from r478441, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorExtension.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorExtension.java?view=diff&rev=479109&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorExtension.java&r1=478441&p2=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorExtension.java&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorExtension.java Sat Nov 25 01:22:05 2006
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.spi.builder;
+package org.apache.tuscany.spi.wire;
import org.osoa.sca.annotations.Init;
import org.osoa.sca.annotations.Scope;
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorExtension.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorExtension.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorRegistry.java (from r478441, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorRegistry.java?view=diff&rev=479109&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java&r1=478441&p2=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorRegistry.java&r2=479109
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorRegistry.java Sat Nov 25 01:22:05 2006
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.tuscany.spi.builder;
+package org.apache.tuscany.spi.wire;
/**
* Acts as a delegating <code>WirePostProcessor</code>, delegating post-processing of wires after policies have been
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorRegistry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WirePostProcessorRegistry.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org