You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2007/07/19 17:46:58 UTC

svn commit: r557662 - in /incubator/tuscany/java/sca/itest/conversations/src: main/java/org/apache/tuscany/sca/itest/conversational/impl/ main/resources/ test/java/org/apache/tuscany/sca/itest/conversational/

Author: slaws
Date: Thu Jul 19 08:46:57 2007
New Revision: 557662

URL: http://svn.apache.org/viewvc?view=rev&rev=557662
Log:
TUSCANY-1377
Updates for stateless services - currently there are issues with user defined conversationId

Added:
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
Modified:
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java
    incubator/tuscany/java/sca/itest/conversations/src/main/resources/conversational.composite
    incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTest.java

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java?view=diff&rev=557662&r1=557661&r2=557662
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java Thu Jul 19 08:46:57 2007
@@ -41,7 +41,7 @@
 
 @Service(interfaces={ConversationalClient.class})
 @Scope("CONVERSATION")
-@ConversationAttributes(maxAge="10 seconds",
+@ConversationAttributes(maxAge="10 minutes",
                         singlePrincipal=false)
 public class ConversationalClientStatefulImpl implements ConversationalClient, ConversationalCallback {
     

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java?view=diff&rev=557662&r1=557661&r2=557662
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java Thu Jul 19 08:46:57 2007
@@ -23,6 +23,7 @@
 import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
 import org.apache.tuscany.sca.itest.conversational.ConversationalService;
 import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
 import org.osoa.sca.annotations.Context;
 import org.osoa.sca.annotations.ConversationAttributes;
 import org.osoa.sca.annotations.Destroy;
@@ -67,6 +68,17 @@
         return clientCount;
     } 
 	public int runConversationFromReference(){
+	    ServiceReference<ConversationalService> serviceReference = componentContext.getServiceReference(ConversationalService.class, 
+	                                                                                                    "conversationalService");
+	    serviceReference.setConversationID("MyConversation");
+	    
+	    ConversationalService callableReference = serviceReference.getService();
+	    
+	    conversationalService.initializeCount(1);
+	    conversationalService.incrementCount();
+	    int count = conversationalService.retrieveCount();
+	    conversationalService.endConversation();
+	    
         return clientCount;
     }
 	public int runConversationPassingReference(){

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java?view=diff&rev=557662&r1=557661&r2=557662
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java Thu Jul 19 08:46:57 2007
@@ -23,6 +23,7 @@
 import org.apache.tuscany.sca.itest.conversational.ConversationalService;
 import org.osoa.sca.annotations.Callback;
 import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.ConversationID;
 import org.osoa.sca.annotations.Conversational;
 import org.osoa.sca.annotations.Destroy;
 import org.osoa.sca.annotations.EndsConversation;
@@ -37,23 +38,27 @@
  *
  * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
  */
-@Service(interfaces={ConversationalService.class})
+@Service(ConversationalService.class)
 @Scope("CONVERSATION")
-@ConversationAttributes(maxAge="10 seconds",
+@ConversationAttributes(maxAge="10 minutes",
                         singlePrincipal=false)
 public class ConversationalServiceStatefulImpl implements ConversationalService {
 
+    @ConversationID
+    private String conversationId;
+    
    // @Callback - not working yet
     protected ConversationalCallback conversationalCallback; 
     
     private int count;
 
     public void init(){
-        
+        count = 999;
     }
     
     public void destroy(){
-        
+        // how do we know that destroy is called?
+        count = 0;
     }
     
     public void initializeCount(int count){
@@ -83,7 +88,7 @@
     }
     
     public void endConversation(){
-        
+        count = 0;
     }
     
     public void endConversationCallback(){

Added: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java?view=auto&rev=557662
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java (added)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java Thu Jul 19 08:46:57 2007
@@ -0,0 +1,112 @@
+/*
+ * 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.sca.itest.conversational.impl;
+
+import java.util.HashMap;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Remotable;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalService.class)
+public class ConversationalServiceStatelessImpl implements ConversationalService {
+    
+    @Context
+    protected ComponentContext componentContext;
+    
+    // @Callback - not working yet
+    protected ConversationalCallback conversationalCallback; 
+    
+    // static area in which to hold conversational data
+    private HashMap<String, Integer> conversationalState = new HashMap<String, Integer>();
+
+
+    public void init(){
+        // does nothing - service is stateless
+    }
+    
+    public void destroy(){
+        // does nothing - service is stateless
+    }
+    
+    public void initializeCount(int count){
+        Integer conversationalCount = new Integer(count); 
+        String conversationId = getConversationId();
+        conversationalState.put(conversationId, conversationalCount);
+    }
+    
+    public void incrementCount(){
+        String conversationId = getConversationId();
+        Integer conversationalCount = conversationalState.get(conversationId);
+        conversationalCount++;
+    }
+    
+    public int retrieveCount(){
+        String conversationId = getConversationId();
+        return conversationalState.get(conversationId).intValue();
+    }
+    
+    public void initializeCountCallback(int count){
+        initializeCount(count);
+        conversationalCallback.initializeCount(count);
+    }
+    
+    public void incrementCountCallback(){
+        incrementCount();
+        conversationalCallback.incrementCount();
+    }
+    
+    public int retrieveCountCallback(){
+        return conversationalCallback.retrieveCount();
+    }
+    
+    public void endConversation(){
+        String conversationId = getConversationId();
+        conversationalState.remove(conversationId);
+    }
+    
+    public void endConversationCallback(){
+        conversationalCallback.endConversation();
+    }
+    
+    private String getConversationId(){
+        ServiceReference<ConversationalService> serviceReference = componentContext.createSelfReference(ConversationalService.class);
+        return (String)serviceReference.getConversationID();
+
+    }
+}

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/resources/conversational.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/resources/conversational.composite?view=diff&rev=557662&r1=557661&r2=557662
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/resources/conversational.composite (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/resources/conversational.composite Thu Jul 19 08:46:57 2007
@@ -21,22 +21,32 @@
 	targetNamespace="http://conversations"
 	name="ConversationalITest">
  	      
-    <component name="ConversationalClientStateful">
+    <component name="ConversationalClientStateless">
 		<implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl"/>
         <!--reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/-->		
-		<reference name="conversationalService" target="ConversationalServiceStateful"/>
+		<reference name="conversationalService" target="ConversationalServiceStatelessSL"/>
     </component>   
     
+    <component name="ConversationalClientStateful">
+        <implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl"/>
+        <!--reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/-->       
+        <reference name="conversationalService" target="ConversationalServiceStateful"/>
+    </component>      
+    
     <!--component name="ConversationalReferenceClient">
         <implementation.java class="org.apache.tuscany.sca.test.AnotherServiceImpl"/>
     </component-->    
         
     <component name="ConversationalServiceStateful">
 		<implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl"/>
-	</component>          
-     
+	</component>       
+   
     <component name="ConversationalServiceStateless">
 		<implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessScope"/>
-	</component>          
+	</component>  
+	
+	<component name="ConversationalServiceStatelessSL">
+        <implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessImpl"/>
+    </component> 
 
 </composite>

Modified: incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTest.java?view=diff&rev=557662&r1=557661&r2=557662
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTest.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTest.java Thu Jul 19 08:46:57 2007
@@ -29,25 +29,39 @@
 public class ConversationalTest {
 
     private SCADomain domain;
-    private ConversationalClient conversationalClient;
+    private ConversationalClient conversationalClientStateless;
+    private ConversationalClient conversationalClientStateful;
 
     @Before
     public void setUp() throws Exception {
         domain = SCADomain.newInstance("conversational.composite");
 
-        conversationalClient = domain.getService(ConversationalClient.class,
-                                                 "ConversationalClientStateful");
+        conversationalClientStateless = domain.getService(ConversationalClient.class,
+                                                          "ConversationalClientStateless");
+
+        conversationalClientStateful  = domain.getService(ConversationalClient.class,
+                                                          "ConversationalClientStateful");
+
     }
 
     @After
     public void tearDown() throws Exception {
         domain.close();
     }
-    
+   
     @Test
     public void testStatefulConversation() {
-        int count = conversationalClient.runConversation();
-        Assert.assertEquals(count, 2);
-    }    
-
+        int count = conversationalClientStateful.runConversation();
+        Assert.assertEquals(2, count);
+        
+        // need to check that initialization and destruction run correctly
+    } 
+    
+    @Test
+    public void testStatelessConversation() {
+        int count = conversationalClientStateless.runConversationFromReference();
+        Assert.assertEquals(2, count);
+        
+        // need to check that initialization and destruction run correctly
+    }     
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org