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/23 12:04:13 UTC

svn commit: r558679 - in /incubator/tuscany/java/sca: itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ itest/conversations/src/main/resour...

Author: slaws
Date: Mon Jul 23 03:04:09 2007
New Revision: 558679

URL: http://svn.apache.org/viewvc?view=rev&rev=558679
Log:
TUSCANY-1377
Generate proper conversationId if a target has conversational scope but only its callback interface is conversational
Add more detailed commentry to AbstractInvocationHandler
Add more testing for error conditions

Added:
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java
Modified:
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java
    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/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
    incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScope.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/ConversationalTestCase.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/component/CallableReferenceImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/ConversationalScopeContainer.java

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java Mon Jul 23 03:04:09 2007
@@ -44,7 +44,9 @@
     
     public int retrieveCount();
     
+    public void businessException() throws Exception;        
+    
     @EndsConversation
-    public void endConversation();
+    public String endConversation();
 
 }

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java Mon Jul 23 03:04:09 2007
@@ -33,10 +33,14 @@
 	public int runConversationFromInjectedReference(); 	
 	public int runConversationFromServiceReference();
 	public int runConversationWithUserDefinedConversationId();
+	public String runConversationCheckUserDefinedConversationId();	
 	public int runConversationCheckingScope();
 	public int runConversationWithCallback(); 
 	public int runConversationHavingPassedReference();
-	public int runConversationError();
+	public String runConversationBusinessException();
+	public String runConversationBusinessExceptionCallback();
+	public int runConversationCallingEndedConversation();
+	public int runConversationCallingEndedConversationCallback();
 	public int runConversationAgeTimeout();
 	public int runConversationIdleTimeout();
 	public int runConversationPrincipleError();	

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java Mon Jul 23 03:04:09 2007
@@ -46,15 +46,19 @@
     
     public int retrieveCount();
     
+    public void businessException() throws Exception;        
+    
     public void initializeCountCallback(int count);
     
     public void incrementCountCallback();
     
     public int retrieveCountCallback();
     
+    public void businessExceptionCallback() throws Exception;    
+    
     @EndsConversation
-    public void endConversation();
+    public String endConversation();
     
-    public void endConversationCallback();
+    public String endConversationCallback();
 
 }

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java Mon Jul 23 03:04:09 2007
@@ -30,14 +30,22 @@
 public class ConversationAgeComponentImpl implements ConversationalService {
 
     private int count;
+    
+    public void businessException() throws Exception {   
+    }
+    
+    public void businessExceptionCallback() throws Exception {   
+    }      
 
     public void destroy() {
     }
 
-    public void endConversation() {
+    public String endConversation() {
+        return null;
     }
 
-    public void endConversationCallback() {
+    public String endConversationCallback() {
+        return null;
     }
 
     public void incrementCount() {

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java Mon Jul 23 03:04:09 2007
@@ -31,13 +31,21 @@
 
     private int count;
 
+    public void businessException() throws Exception {   
+    }
+    
+    public void businessExceptionCallback() throws Exception {   
+    }    
+    
     public void destroy() {
     }
 
-    public void endConversation() {
+    public String endConversation() {
+        return null;
     }
 
-    public void endConversationCallback() {
+    public String endConversationCallback() {
+        return null;
     }
 
     public void incrementCount() {

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=558679&r1=558678&r2=558679
==============================================================================
--- 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 Mon Jul 23 03:04:09 2007
@@ -26,6 +26,7 @@
 import org.osoa.sca.ServiceReference;
 import org.osoa.sca.annotations.Context;
 import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.ConversationID;
 import org.osoa.sca.annotations.Destroy;
 import org.osoa.sca.annotations.EndsConversation;
 import org.osoa.sca.annotations.Init;
@@ -53,7 +54,7 @@
     @Reference 
     protected ConversationalService conversationalService;
     
-    // @Reference - not yet
+    @Reference
     protected ConversationalReferenceClient conversationalReferenceClient;
       
     private int clientCount = 0;
@@ -92,7 +93,7 @@
         calls.append("runConversationWithUserDefinedConversationId,");
         ServiceReference<ConversationalService> serviceReference = componentContext.getServiceReference(ConversationalService.class, 
                                                                                                         "conversationalService");
-        serviceReference.setConversationID("MyConversation");
+        serviceReference.setConversationID("MyConversation1");
         
         ConversationalService callableReference = serviceReference.getService();
         
@@ -105,6 +106,20 @@
         
         return clientCount;
     }    
+    public String runConversationCheckUserDefinedConversationId(){
+        calls.append("runConversationCheckUserDefinedConversationId,");
+        ServiceReference<ConversationalService> serviceReference = componentContext.getServiceReference(ConversationalService.class, 
+                                                                                                        "conversationalService");
+        serviceReference.setConversationID("MyConversation2");
+        
+        ConversationalService callableReference = serviceReference.getService();
+        
+        callableReference.initializeCount(1);
+        callableReference.incrementCount();
+        clientCount = callableReference.retrieveCount();
+        return callableReference.endConversation();
+              
+    }      
     public int runConversationCheckingScope(){
         calls.append("runConversationCheckingScope,");
         // run a conversation
@@ -123,24 +138,77 @@
         
         return clientCount;
     } 
-	public int runConversationHavingPassedReference(){
-	    calls.append("runConversationHavingPassedReference,");
-        return clientCount;
-    }
-	public int runConversationError(){
-	    calls.append("runConversationError,");
+    public int runConversationHavingPassedReference(){
+        calls.append("runConversationHavingPassedReference,");
+        ServiceReference<ConversationalService> serviceReference = componentContext.getServiceReference(ConversationalService.class, 
+                                                                                                        "conversationalService");       
+        ConversationalService callableReference = serviceReference.getService();
+        
+        callableReference.initializeCount(1);
+        callableReference.incrementCount();
+        conversationalReferenceClient.incrementCount(serviceReference);
+        clientCount = callableReference.retrieveCount();
+        callableReference.endConversation();
+        
+        serviceReference.getConversation().end();
+        
         return clientCount;
     }
+    public String runConversationBusinessException(){
+        calls.append("runConversationbusinessException,");      
+        try {
+            conversationalService.initializeCount(1);
+            conversationalService.businessException();
+            clientCount = conversationalService.retrieveCount();
+            conversationalService.endConversation();
+        } catch(Exception ex) {
+            return ex.getMessage();
+        }
+         
+        return "No Exception Returned";
+    }
+    
+    public String runConversationBusinessExceptionCallback(){
+        calls.append("runConversationbusinessExceptionCallback,");
+        try {
+            conversationalService.initializeCountCallback(1);
+            conversationalService.businessExceptionCallback();
+            clientCount = conversationalService.retrieveCountCallback();
+            conversationalService.endConversationCallback();
+        } catch(Exception ex) {
+            return ex.getMessage();
+        }
+         
+        return "No Exception Returned";
+    }   
+    
+    public int runConversationCallingEndedConversation(){
+        calls.append("runConversationCallingEndedConversation,");
+        conversationalService.initializeCount(1);
+        conversationalService.endConversation();
+        return conversationalService.retrieveCount();
+    }   
+    
+    public int runConversationCallingEndedConversationCallback(){
+        calls.append("runConversationCallingEndedConversationCallback,");
+        conversationalService.initializeCountCallback(1);
+        conversationalService.endConversationCallback();
+        return conversationalService.retrieveCountCallback();
+    }  
+    
     public int runConversationAgeTimeout(){
         calls.append("runConversationAgeTimeout,");
+        // done in other testing
         return clientCount;
     }
     public int runConversationIdleTimeout(){
         calls.append("runConversationIdleTimeout,");
+        // done in other testing
         return clientCount;
     }
     public int runConversationPrincipleError(){
         calls.append("runConversationPrincipleError,");
+        // TODO - when policy framework is done
         return clientCount;
     }
     
@@ -149,13 +217,11 @@
     @Init
     public void init(){
         calls.append("init,");
-
     }
     
     @Destroy
     public void destroy(){
-        calls.append("destroy,");
-        
+        calls.append("destroy,"); 
     }
     
     public void initializeCount(int count){
@@ -173,9 +239,13 @@
         return  callbackCount;
     }
     
-    public void endConversation(){
+    public void businessException() throws Exception {
+        throw new Exception("Business Exception");
+    }     
+    
+    public String endConversation(){
         calls.append("endConversation,");
-        
+        return null;
     }
 
 }

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=558679&r1=558678&r2=558679
==============================================================================
--- 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 Mon Jul 23 03:04:09 2007
@@ -26,6 +26,7 @@
 import org.osoa.sca.ServiceReference;
 import org.osoa.sca.annotations.Context;
 import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.ConversationID;
 import org.osoa.sca.annotations.Destroy;
 import org.osoa.sca.annotations.EndsConversation;
 import org.osoa.sca.annotations.Init;
@@ -42,14 +43,14 @@
 
 @Service(interfaces={ConversationalClient.class})
 public class ConversationalClientStatelessImpl implements ConversationalClient, ConversationalCallback {
-    
+   
     @Context
     protected ComponentContext componentContext;
     
     @Reference 
     protected ConversationalService conversationalService;
     
-    // @Reference - not yet
+    @Reference
     protected ConversationalReferenceClient conversationalReferenceClient;
     
     private int clientCount = 0;
@@ -98,6 +99,20 @@
         
         return clientCount;
     }    
+    public String runConversationCheckUserDefinedConversationId(){
+        calls.append("runConversationCheckUserDefinedConversationId,");
+        ServiceReference<ConversationalService> serviceReference = componentContext.getServiceReference(ConversationalService.class, 
+                                                                                                        "conversationalService");
+        serviceReference.setConversationID("MyConversation2");
+        
+        ConversationalService callableReference = serviceReference.getService();
+        
+        callableReference.initializeCount(1);
+        callableReference.incrementCount();
+        clientCount = callableReference.retrieveCount();
+        return callableReference.endConversation();
+              
+    }     
     public int runConversationCheckingScope(){
         calls.append("runConversationCheckingScope,");
         // run a conversation
@@ -115,24 +130,79 @@
         
         return clientCount;
     } 
+    
     public int runConversationHavingPassedReference(){
         calls.append("runConversationHavingPassedReference,");
+        ServiceReference<ConversationalService> serviceReference = componentContext.getServiceReference(ConversationalService.class, 
+                                                                                                        "conversationalService");       
+        ConversationalService callableReference = serviceReference.getService();
+        
+        callableReference.initializeCount(1);
+        callableReference.incrementCount();
+        conversationalReferenceClient.incrementCount(serviceReference);
+        clientCount = callableReference.retrieveCount();
+        callableReference.endConversation();
+        
+        serviceReference.getConversation().end();
+        
         return clientCount;
     }	
-	public int runConversationError(){
-        calls.append("runConversationError,");
-        return clientCount;
+    
+	public String runConversationBusinessException(){
+	    calls.append("runConversationbusinessException,");	    
+	    try {
+            conversationalService.initializeCount(1);
+            conversationalService.businessException();
+            clientCount = conversationalService.retrieveCount();
+            conversationalService.endConversation();
+	    } catch(Exception ex) {
+	        return ex.getMessage();
+	    }
+         
+        return "No Exception Returned";
     }
+	
+    public String runConversationBusinessExceptionCallback(){
+        calls.append("runConversationbusinessExceptionCallback,");
+        try {
+            conversationalService.initializeCountCallback(1);
+            conversationalService.businessExceptionCallback();
+            clientCount = conversationalService.retrieveCountCallback();
+            conversationalService.endConversationCallback();
+        } catch(Exception ex) {
+            return ex.getMessage();
+        }
+         
+        return "No Exception Returned";
+    }	
+	
+    public int runConversationCallingEndedConversation(){
+        calls.append("runConversationCallingEndedConversation,");
+        conversationalService.initializeCount(1);
+        conversationalService.endConversation();
+        return conversationalService.retrieveCount();
+    }   
+    
+    public int runConversationCallingEndedConversationCallback(){
+        calls.append("runConversationCallingEndedConversationCallback,");
+        conversationalService.initializeCountCallback(1);
+        conversationalService.endConversationCallback();
+        return conversationalService.retrieveCountCallback();
+    }   
+    
     public int runConversationAgeTimeout(){
         calls.append("runConversationAgeTimeout,");
+        // done in other testing
         return clientCount;
     }
     public int runConversationIdleTimeout(){
         calls.append("runConversationIdleTimeout,");
+        // done in other testing
         return clientCount;
     }
     public int runConversationPrincipleError(){
         calls.append("runConversationPrincipleError,");
+        // TODO - when policy framework is done
         return clientCount;
     }
     
@@ -165,9 +235,13 @@
         return  callbackCount;
     }
     
-    public void endConversation(){
+    public void businessException() throws Exception {
+        throw new Exception("Business Exception");
+    }     
+    
+    public String endConversation(){
         calls.append("endConversation,");
-        
+        return null;
     }
 
 }

Added: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java?view=auto&rev=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java (added)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java Mon Jul 23 03:04:09 2007
@@ -0,0 +1,55 @@
+/*
+ * 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 org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.CallableReference;
+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.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * A client component that accepts a reference to an ongoing conversation
+ * and takes part in that conversation
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalReferenceClient.class})
+public class ConversationalReferenceClientImpl implements ConversationalReferenceClient{
+   
+    public void incrementCount(CallableReference<ConversationalService> conversationalService){
+        ConversationalService callableReference = conversationalService.getService();
+        
+        callableReference.incrementCount();        
+    }
+
+
+}

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=558679&r1=558678&r2=558679
==============================================================================
--- 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 Mon Jul 23 03:04:09 2007
@@ -82,6 +82,10 @@
         return count;
     }
     
+    public void businessException() throws Exception {
+        throw new Exception("Business Exception");
+    }     
+    
     public void initializeCountCallback(int count){
         calls.append("initializeCountCallback,"); 
         this.count = count;
@@ -99,13 +103,19 @@
         return conversationalCallback.retrieveCount();
     }
     
-    public void endConversation(){
+    public void businessExceptionCallback() throws Exception {
+        calls.append("businessExceptionCallback,");        
+        conversationalCallback.businessException();
+    }    
+    
+    public String endConversation(){
         calls.append("endConversation,"); 
         count = 0;
+        return conversationId;
     }
     
-    public void endConversationCallback(){
+    public String endConversationCallback(){
         calls.append("endConversationCallback,"); 
-        conversationalCallback.endConversation();
+        return conversationalCallback.endConversation();
     }
 }

Modified: 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=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java Mon Jul 23 03:04:09 2007
@@ -84,9 +84,18 @@
     
     public int retrieveCount(){
         calls.append("retrieveCount,");
-        return conversationalState.get(conversationId).intValue();
+        Integer count = conversationalState.get(conversationId);
+        if (count != null){
+            return count.intValue();
+        } else {
+            return -999;
+        }
     }
     
+    public void businessException() throws Exception {
+        throw new Exception("Business Exception");
+    }    
+    
     public void initializeCountCallback(int count){
         calls.append("initializeCountCallback,");
         initializeCount(count);
@@ -104,13 +113,19 @@
         return conversationalCallback.retrieveCount();
     }
     
-    public void endConversation(){
+    public void businessExceptionCallback() throws Exception {
+        calls.append("businessExceptionCallback,");        
+        conversationalCallback.businessException();
+    }
+    
+    public String endConversation(){
         calls.append("endConversation,");
         conversationalState.remove(conversationId);
+        return conversationId;
     }
     
-    public void endConversationCallback(){
+    public String endConversationCallback(){
         calls.append("endConversationCallback,");       
-        conversationalCallback.endConversation();
+        return conversationalCallback.endConversation();
     }   
 }

Modified: incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScope.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScope.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScope.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScope.java Mon Jul 23 03:04:09 2007
@@ -39,12 +39,14 @@
         
     }
 
-    public void endConversation() {
+    public String endConversation() {
         state.remove(cid);
+        return cid;
     }
 
-    public void endConversationCallback() {
+    public String endConversationCallback() {
         // TODO Auto-generated method stub
+        return null;
         
     }
 
@@ -52,6 +54,10 @@
         state.put(cid, Integer.valueOf(state.get(cid)+1));
     }
 
+    public void businessException() throws Exception {
+        throw new Exception("Business Exception");
+    }
+    
     public void incrementCountCallback() {
         // TODO Auto-generated method stub
         
@@ -70,6 +76,10 @@
         // TODO Auto-generated method stub
         
     }
+    
+    public void businessExceptionCallback() throws Exception {
+        throw new Exception("Business Exception");
+    }    
 
     public int retrieveCount() {
         return state.get(cid);

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=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/main/resources/conversational.composite (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/main/resources/conversational.composite Mon Jul 23 03:04:09 2007
@@ -23,31 +23,31 @@
  	      
     <component name="ConversationalStatelessClientStatelessService">
 		<implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl"/>
-        <!--reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/-->		
+        <reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/>		
 		<reference name="conversationalService" target="ConversationalServiceStatelessSL"/>
     </component>   
     
     <component name="ConversationalStatelessClientStatefulService">
         <implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl"/>
-        <!--reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/-->       
+        <reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/>       
         <reference name="conversationalService" target="ConversationalServiceStateful"/>
     </component>     
     
     <component name="ConversationalStatefulClientStatelessService">
         <implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl"/>
-        <!--reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/-->       
+        <reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/>       
         <reference name="conversationalService" target="ConversationalServiceStatelessSL"/>
     </component>   
     
     <component name="ConversationalStatefulClientStatefulService">
         <implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl"/>
-        <!--reference name="conversationalReferenceClient" target="ConversationalReferenceClient"/-->       
+        <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="ConversationalReferenceClient">
+        <implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalReferenceClientImpl"/>
+    </component>    
         
     <component name="ConversationalServiceStateful">
 		<implementation.java class="org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl"/>

Modified: incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java Mon Jul 23 03:04:09 2007
@@ -87,14 +87,20 @@
     public void testStatelessStatefulConversationWithUserDefinedConversationId() {
         int count = conversationalStatelessClientStatefulService.runConversationWithUserDefinedConversationId();
         Assert.assertEquals(2, count);
-    }    
+    }   
+    
+    @Test
+    public void testStatelessStatefulConversationCheckUserDefinedConversationId() {
+        String conversationId = conversationalStatelessClientStatefulService.runConversationCheckUserDefinedConversationId();
+        Assert.assertEquals("MyConversation2", conversationId);
+    } 
     
     @Test
     public void testStatelessStatefulConversationCheckingScope() {
         int count = conversationalStatelessClientStatefulService.runConversationCheckingScope();
         Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,", 
                             ConversationalServiceStatefulImpl.calls.toString());
-    }  
+    }     
     
     @Test
     public void testStatelessStatefulConversationWithCallback() {
@@ -103,7 +109,37 @@
                
         Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,destroy,", 
                             ConversationalClientStatelessImpl.calls.toString());        
-    }         
+    }  
+    
+    //@Test
+    public void testStatelessStatefulConversationHavingPassedReference() {
+        int count = conversationalStatelessClientStatefulService.runConversationHavingPassedReference();
+        Assert.assertEquals(3, count);
+    }    
+  
+    @Test
+    public void testStatelessStatefulConversationBusinessException() {
+        String message = conversationalStatelessClientStatefulService.runConversationBusinessException();
+        Assert.assertEquals("Business Exception", message);
+    }     
+    
+    @Test
+    public void testStatelessStatefulConversationBusinessExceptionCallback() {
+        String message = conversationalStatelessClientStatefulService.runConversationBusinessExceptionCallback();
+        Assert.assertEquals("Business Exception", message);
+    }  
+    
+    @Test
+    public void testStatelessStatefulConversationCallingEndedConversation() {
+        int count = conversationalStatelessClientStatefulService.runConversationCallingEndedConversation();
+        Assert.assertEquals(0, count);
+    }     
+    
+    @Test
+    public void testStatelessStatefulConversationCallingEndedConversationCallback() {
+        int count = conversationalStatelessClientStatefulService.runConversationCallingEndedConversationCallback();
+        Assert.assertEquals(0, count);
+    }     
     
     // stateless client stateless service tests
     // ========================================
@@ -123,7 +159,12 @@
     public void testStatelessStatelessConversationWithUserDefinedConversationId() {
         int count = conversationalStatelessClientStatelessService.runConversationWithUserDefinedConversationId();
         Assert.assertEquals(2, count);
-    }    
+    }  
+    @Test
+    public void testStatelessStatelessConversationCheckUserDefinedConversationId() {
+        String conversationId = conversationalStatelessClientStatelessService.runConversationCheckUserDefinedConversationId();
+        Assert.assertEquals("MyConversation2", conversationId);
+    }     
     
     @Test
     public void testStatelessStatelessConversationCheckingScope() {
@@ -131,6 +172,32 @@
         Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,", 
                             ConversationalServiceStatelessImpl.calls.toString());
     }       
+    
+    @Test
+    public void testStatelessStatelessConversationWithCallback() {
+        int count = conversationalStatelessClientStatelessService.runConversationWithCallback();
+        Assert.assertEquals(0, count);
+               
+        Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,destroy,", 
+                            ConversationalClientStatelessImpl.calls.toString());        
+    }
+    //@Test
+    public void testStatelessStatelessConversationHavingPassedReference() {
+        int count = conversationalStatelessClientStatelessService.runConversationHavingPassedReference();
+        Assert.assertEquals(3, count);
+    }     
+
+    @Test
+    public void testStatelessStatelessConversationCallingEndedConversation() {
+        int count = conversationalStatelessClientStatelessService.runConversationCallingEndedConversation();
+        Assert.assertEquals(-999, count);
+    }     
+    
+    @Test
+    public void testStatelessStatelessConversationCallingEndedConversationCallback() {
+        int count = conversationalStatelessClientStatelessService.runConversationCallingEndedConversationCallback();
+        Assert.assertEquals(0, count);
+    } 
 
     // stateful client stateful service tests  
     // ======================================
@@ -153,6 +220,12 @@
     }    
     
     @Test
+    public void testStatefulStatefulConversationCheckUserDefinedConversationId() {
+        String conversationId = conversationalStatefulClientStatefulService.runConversationCheckUserDefinedConversationId();
+        Assert.assertEquals("MyConversation2", conversationId);
+    } 
+    
+    @Test
     public void testStatefulStatefulConversationCheckingScope() {
         int count = conversationalStatefulClientStatefulService.runConversationCheckingScope();
         Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,", 
@@ -166,8 +239,26 @@
                
         Assert.assertEquals("init,runConversationWithCallback,initializeCount,incrementCount,retrieveCount,endConversation,destroy,", 
                             ConversationalClientStatefulImpl.calls.toString());        
-    }      
+    }   
+    
+    //@Test
+    public void testStatefulStatefulConversationHavingPassedReference() {
+        int count = conversationalStatefulClientStatefulService.runConversationHavingPassedReference();
+        Assert.assertEquals(3, count);
+    } 
+    
+    @Test
+    public void testStatefulStatefulConversationCallingEndedConversation() {
+        int count = conversationalStatefulClientStatefulService.runConversationCallingEndedConversation();
+        Assert.assertEquals(0, count);
+    }     
     
+    @Test
+    public void testStatefulStatefulConversationCallingEndedConversationCallback() {
+        int count = conversationalStatefulClientStatefulService.runConversationCallingEndedConversationCallback();
+        Assert.assertEquals(0, count);
+    }     
+   
     // stateful client stateless service tests  
     // =======================================
     @Test
@@ -187,12 +278,45 @@
         int count = conversationalStatefulClientStatelessService.runConversationWithUserDefinedConversationId();
         Assert.assertEquals(2, count);
     }    
+
+    @Test
+    public void testStatefulStatelessConversationCheckUserDefinedConversationId() {
+        String conversationId = conversationalStatefulClientStatelessService.runConversationCheckUserDefinedConversationId();
+        Assert.assertEquals("MyConversation2", conversationId);
+    } 
     
     @Test
     public void testStatefulStatelessConversationCheckingScope() {
         int count = conversationalStatefulClientStatelessService.runConversationCheckingScope();
         Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,", 
                             ConversationalServiceStatelessImpl.calls.toString());
-    }       
+    } 
+    
+    @Test
+    public void testStatefulStatelessConversationWithCallback() {
+        int count = conversationalStatefulClientStatelessService.runConversationWithCallback();
+        Assert.assertEquals(4, count);
+               
+        Assert.assertEquals("init,runConversationWithCallback,initializeCount,incrementCount,retrieveCount,endConversation,destroy,", 
+                            ConversationalClientStatefulImpl.calls.toString());        
+    }     
+    
+    //@Test
+    public void testStatefulStatelessConversationHavingPassedReference() {
+        int count = conversationalStatefulClientStatelessService.runConversationHavingPassedReference();
+        Assert.assertEquals(3, count);
+    }     
+    
+    @Test
+    public void testStatefulStatelessConversationCallingEndedConversation() {
+        int count = conversationalStatefulClientStatelessService.runConversationCallingEndedConversation();
+        Assert.assertEquals(-999, count);
+    }     
+    
+    @Test
+    public void testStatefulStatelessConversationCallingEndedConversationCallback() {
+        int count = conversationalStatefulClientStatelessService.runConversationCallingEndedConversationCallback();
+        Assert.assertEquals(0, count);
+    }        
         
 }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/component/CallableReferenceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/component/CallableReferenceImpl.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/component/CallableReferenceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/component/CallableReferenceImpl.java Mon Jul 23 03:04:09 2007
@@ -49,7 +49,7 @@
     }
 
     public boolean isConversational() {
-        return false;
+        return ((WireObjectFactory<B>)factory).getConversation() != null;
     }
 
     public Conversation getConversation() {

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java Mon Jul 23 03:04:09 2007
@@ -68,7 +68,7 @@
         // 2 - Specified by the application (through a service reference)
         // 3 - from the message context (if the source is stateful)
         //
-        // TODO - number 3 seems a little shaky as we end up propogating
+        // TODO - number 3 seems a little shaky as we end up propagating
         //        a conversationId through the source component. If we don't
         //        do this though we can't correlate the callback call with the
         //        current target instance. Currently specifying an application
@@ -84,16 +84,17 @@
             Object conversationId = conversation.getConversationID();
             
             // create a conversation id if one doesn't exist 
-            // already. This could be because we are in the middle of a
-            // conversation or the conversation hasn't started but the
+            // already, i.e. the conversation is just starting
             if ((conversationStarted == false) && (conversationId == null)) {
                 
                 // It the current component is already in a conversation
                 // the use this just in case this message has a stateful 
                 // callback. In which case the callback will come back
                 // to the correct instance. 
-                // TODO - need a better mechanism for identifyng the 
-                //        stateful callback case
+                // TODO - we should always create a unique id here or
+                //        take the application defined conversation id. 
+                //        This implies we have to re-register the component 
+                //        instance against this 
                 if (msgContextConversationId == null) {
                     conversationId = createConversationID();
                 } else {

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/ConversationalScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/ConversationalScopeContainer.java?view=diff&rev=558679&r1=558678&r2=558679
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/ConversationalScopeContainer.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/scope/ConversationalScopeContainer.java Mon Jul 23 03:04:09 2007
@@ -22,6 +22,7 @@
 
 import java.util.Iterator;
 import java.util.Map;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
@@ -135,7 +136,7 @@
         // conversation Id here to store the service against
         // and populate the thread context
         if (contextId == null){
-            contextId = new String("1234");
+            contextId = UUID.randomUUID().toString();
             Message msgContext = ThreadMessageContext.getMessageContext();
             
             if (msgContext != null){



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