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 2008/03/11 15:47:16 UTC

svn commit: r635955 - in /incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context: CallableReferenceImpl.java ServiceReferenceImpl.java

Author: slaws
Date: Tue Mar 11 07:47:15 2008
New Revision: 635955

URL: http://svn.apache.org/viewvc?rev=635955&view=rev
Log:
TUSCANY-2056
When converting a callable reference to XML serialize the active conversationId, if there is one, instead of the manually set conversationId.

Modified:
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ServiceReferenceImpl.java

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java?rev=635955&r1=635954&r2=635955&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java Tue Mar 11 07:47:15 2008
@@ -130,10 +130,15 @@
     }
 
     public RuntimeWire getRuntimeWire() {
-        if (reference != null) {
-            return reference.getRuntimeWire(binding);
-        } else {
-            return null;
+        try {
+            resolve();
+            if (reference != null) {
+                return reference.getRuntimeWire(binding);
+            } else {
+                return null;
+            }
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
         }
     }
 
@@ -157,9 +162,9 @@
 
     public B getProxy() throws ObjectCreationException {
         try {
-			if (proxy == null) {
+            if (proxy == null) {
                 proxy = createProxy(); 
-			}
+            }
             return businessInterface.cast(proxy);
         } catch (Exception e) {
             throw new ObjectCreationException(e);
@@ -184,22 +189,46 @@
     }
 
     public Class<B> getBusinessInterface() {
-        return businessInterface;
+        try {
+            resolve();
+            return businessInterface;
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
+        }            
     }
 
     public boolean isConversational() {
-        return reference == null ? false : reference.getInterfaceContract().getInterface().isConversational();
+        try {
+            resolve();        
+            return reference == null ? false : reference.getInterfaceContract().getInterface().isConversational();
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
+        }
     }
 
     public Conversation getConversation() {
-        if (conversation == null || conversation.getState() == ConversationState.ENDED) {
-            conversation = null;
+        try {
+            // resolve from XML just in case this callable reference is the result of
+            // passing a callable reference as a parameter
+            resolve();
+            
+            if (conversation == null || conversation.getState() == ConversationState.ENDED) {
+                conversation = null;
+            }
+            return conversation;
+        
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
         }
-        return conversation;
     }
 
     public Object getCallbackID() {
-        return callbackID;
+        try {
+            resolve();        
+            return callbackID;
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
+        }        
     }
 
     /**
@@ -242,7 +271,17 @@
                 if (parameters != null) {
                     refParams = parameters;
                     this.callbackID = parameters.getCallbackID();
-                    this.conversationID = parameters.getConversationID();
+                    
+                    if (parameters.getConversationID() != null){
+                        ExtendedConversation conversation = conversationManager.getConversation(parameters.getConversationID());
+                        
+                        if (conversation == null){
+                            conversationManager.startConversation(parameters.getConversationID());
+                        }
+                        this.conversation = conversation;
+                    } else {
+                        this.conversation = null;
+                    }
                 }
 
                 for (Binding binding : reference.getBindings()) {
@@ -333,7 +372,9 @@
                 clonedRef.getExtensions().add(refParams);
             }
             refParams.setCallbackID(callbackID);
-            refParams.setConversationID(conversationID);
+            if (conversation != null){
+                refParams.setConversationID(conversation.getConversationID());
+            }
             return ((CompositeActivatorImpl)compositeActivator).getComponentContextHelper()
                     .toXML(component, clonedRef);
         } else { 
@@ -373,15 +414,21 @@
     }
 
     public EndpointReference getEndpointReference() {
-        // Use the interface contract of the reference on the component type
-        Reference componentTypeRef = reference.getReference();
-        InterfaceContract sourceContract =
-            componentTypeRef == null ? reference.getInterfaceContract() : componentTypeRef.getInterfaceContract();
-        sourceContract = sourceContract.makeUnidirectional(false);
-        EndpointReference epr = new EndpointReferenceImpl(component, reference, binding, sourceContract);
-        ReferenceParameters parameters = getReferenceParameters();
-        epr.setReferenceParameters(parameters);
-        return epr;
+        try {
+            resolve();  
+            
+            // Use the interface contract of the reference on the component type
+            Reference componentTypeRef = reference.getReference();
+            InterfaceContract sourceContract =
+                componentTypeRef == null ? reference.getInterfaceContract() : componentTypeRef.getInterfaceContract();
+            sourceContract = sourceContract.makeUnidirectional(false);
+            EndpointReference epr = new EndpointReferenceImpl(component, reference, binding, sourceContract);
+            ReferenceParameters parameters = getReferenceParameters();
+            epr.setReferenceParameters(parameters);
+            return epr;
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
+        }        
     }
 
     public XMLStreamReader getXMLReader() {

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ServiceReferenceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ServiceReferenceImpl.java?rev=635955&r1=635954&r2=635955&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ServiceReferenceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ServiceReferenceImpl.java Tue Mar 11 07:47:15 2008
@@ -92,7 +92,8 @@
             this.conversationID = conversationID;
             this.conversation = null;
         } else {
-            throw new IllegalStateException("The state of the conversation " + conversation.getConversationID()
+            throw new IllegalStateException("Trying to set the conversationId on a service reference but the state of the conversation " 
+                + conversation.getConversationID()
                 + " is "
                 + conversation.getState());
         }



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