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