You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/09/05 02:32:24 UTC
svn commit: r572848 - in
/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context:
CallableReferenceImpl.java ComponentContextHelper.java
ReferenceParameterProcessor.java ReferenceParameters.java
RequestContextImpl.java
Author: rfeng
Date: Tue Sep 4 17:32:24 2007
New Revision: 572848
URL: http://svn.apache.org/viewvc?rev=572848&view=rev
Log:
Serialize the states for CallableReference as an extension element to the <reference> and apply the patch for TUSCANY-1661
Added:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameterProcessor.java (with props)
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameters.java (with props)
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/ComponentContextHelper.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.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=572848&r1=572847&r2=572848&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 Sep 4 17:32:24 2007
@@ -23,7 +23,6 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.net.URI;
-import java.util.StringTokenizer;
import java.util.UUID;
import org.apache.tuscany.sca.assembly.Binding;
@@ -95,7 +94,7 @@
this.binding = this.reference.getBindings().get(0);
}
}
-
+
// FIXME: Should we normalize the componentName/serviceName URI into an absolute SCA URI in the SCA binding?
// sca:component1/component11/component112/service1?
String componentURI = component.getURI(); // The target will be relative to this base URI
@@ -118,7 +117,7 @@
return null;
}
}
-
+
protected void bind(RuntimeWire wire) {
if (wire != null) {
this.component = wire.getSource().getComponent();
@@ -127,9 +126,9 @@
this.componentURI = component.getURI();
this.compositeActivator = ((ComponentContextImpl)component.getComponentContext()).getCompositeActivator();
init(wire);
- }
+ }
}
-
+
protected void init(RuntimeWire wire) {
EndpointReference target = wire.getTarget();
@@ -191,26 +190,6 @@
*/
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
this.scdl = in.readUTF();
- // resolve();
-
- String uri = in.readUTF();
- int index = uri.indexOf('?');
- if (index == -1) {
- componentURI = uri;
- } else {
- componentURI = uri.substring(0, index);
- String query = uri.substring(index);
- StringTokenizer tokenizer = new StringTokenizer(query, "&");
- while (tokenizer.hasMoreTokens()) {
- String attr = tokenizer.nextToken();
- String pair[] = attr.split("=");
- if (pair[0].equals("sca.conversationID")) {
- this.conversationID = pair[1];
- } else if (pair[0].equals("sca.callbackID")) {
- this.callbackID = pair[1];
- }
- }
- }
}
/**
@@ -227,6 +206,18 @@
currentActivator.configureComponentContext(this.component);
this.reference = (RuntimeComponentReference)c.getReferences().get(0);
this.reference.setComponent(this.component);
+ ReferenceParameters parameters = null;
+ for (Object ext : reference.getExtensions()) {
+ if (ext instanceof ReferenceParameters) {
+ parameters = (ReferenceParameters)ext;
+ break;
+ }
+ }
+ if (parameters != null) {
+ this.callbackID = parameters.getCallbackID();
+ this.conversationID = parameters.getConversationID();
+ this.componentURI = parameters.getComponentURI();
+ }
URI uri = URI.create("/" + componentURI);
for (Binding binding : reference.getBindings()) {
if (binding instanceof WireableBinding) {
@@ -289,24 +280,15 @@
*/
public void writeExternal(ObjectOutput out) throws IOException {
try {
+ ReferenceParameters parameters = new ReferenceParameters();
+ parameters.setCallbackID(callbackID);
+ parameters.setComponentURI(componentURI);
+ parameters.setConversationID(conversationID);
+ reference.getExtensions().add(parameters);
String scdl =
((CompositeActivatorImpl)compositeActivator).getComponentContextHelper().toXML(component, reference);
+ reference.getExtensions().remove(parameters);
out.writeUTF(scdl);
- StringBuffer uri = new StringBuffer(componentURI);
- boolean first = true;
- if (conversationID != null) {
- uri.append("?sca.conversationID=").append(conversationID);
- first = false;
- }
- if (callbackID != null) {
- if (!first) {
- uri.append("&");
- } else {
- uri.append("?");
- }
- uri.append("sca.callbackID=").append(callbackID);
- }
- out.writeUTF(uri.toString());
} catch (Exception e) {
e.printStackTrace();
throw new IOException(e.getMessage());
@@ -321,9 +303,13 @@
private String createCallbackID() {
return UUID.randomUUID().toString();
}
-
+
public void attachCallbackID(Object callbackID) {
this.callbackID = callbackID;
+ }
+
+ public void attachConversationID(Object conversationID) {
+ conversation.setConversationID(conversationID);
}
}
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextHelper.java?rev=572848&r1=572847&r2=572848&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextHelper.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextHelper.java Tue Sep 4 17:32:24 2007
@@ -78,6 +78,7 @@
this.assemblyFactory = assemblyFactory;
this.javaInterfaceFactory = javaInterfaceFactory;
this.staxProcessors = processors;
+ staxProcessors.addArtifactProcessor(new ReferenceParameterProcessor());
}
/**
Added: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameterProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameterProcessor.java?rev=572848&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameterProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameterProcessor.java Tue Sep 4 17:32:24 2007
@@ -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.sca.core.context;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.service.ContributionReadException;
+import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
+import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ReferenceParameterProcessor implements StAXArtifactProcessor<ReferenceParameters> {
+ private final static QName REFERENCE_PARAMETERS =
+ new QName("http://tuscany.apache.org/xmlns/sca/1.0", "referenceParameters", "tuscany");
+
+ /**
+ * @see org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor#getArtifactType()
+ */
+ public QName getArtifactType() {
+ return REFERENCE_PARAMETERS;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor#read(javax.xml.stream.XMLStreamReader)
+ */
+ public ReferenceParameters read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
+ ReferenceParameters parameters = new ReferenceParameters();
+ parameters.setComponentURI(reader.getAttributeValue(null, "componentURI"));
+ parameters.setConversationID(reader.getAttributeValue(null, "conversationID"));
+ parameters.setCallbackID(reader.getAttributeValue(null, "callbackID"));
+ return parameters;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor#write(java.lang.Object, javax.xml.stream.XMLStreamWriter)
+ */
+ public void write(ReferenceParameters model, XMLStreamWriter writer) throws ContributionWriteException,
+ XMLStreamException {
+ writer.writeStartElement(REFERENCE_PARAMETERS.getPrefix(),
+ REFERENCE_PARAMETERS.getLocalPart(),
+ REFERENCE_PARAMETERS.getNamespaceURI());
+ writer.writeNamespace(REFERENCE_PARAMETERS.getPrefix(), REFERENCE_PARAMETERS.getNamespaceURI());
+ if (model.getComponentURI() != null) {
+ writer.writeAttribute("componentURI", model.getComponentURI());
+ }
+ if (model.getConversationID() != null) {
+ writer.writeAttribute("conversationID", model.getConversationID().toString());
+ }
+ if (model.getCallbackID() != null) {
+ writer.writeAttribute("callbackID", model.getCallbackID().toString());
+ }
+ writer.writeEndElement();
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.contribution.processor.ArtifactProcessor#getModelType()
+ */
+ public Class<ReferenceParameters> getModelType() {
+ return ReferenceParameters.class;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.contribution.processor.ArtifactProcessor#resolve(java.lang.Object, org.apache.tuscany.sca.contribution.resolver.ModelResolver)
+ */
+ public void resolve(ReferenceParameters model, ModelResolver resolver) throws ContributionResolveException {
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameterProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameterProcessor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameters.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameters.java?rev=572848&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameters.java (added)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameters.java Tue Sep 4 17:32:24 2007
@@ -0,0 +1,65 @@
+/*
+ * 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.core.context;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ReferenceParameters {
+ private String componentURI;
+ private Object callbackID;
+ private Object conversationID;
+ /**
+ * @return the callbackID
+ */
+ public Object getCallbackID() {
+ return callbackID;
+ }
+ /**
+ * @param callbackID the callbackID to set
+ */
+ public void setCallbackID(Object callbackID) {
+ this.callbackID = callbackID;
+ }
+ /**
+ * @return the conversationID
+ */
+ public Object getConversationID() {
+ return conversationID;
+ }
+ /**
+ * @param conversationID the conversationID to set
+ */
+ public void setConversationID(Object conversationID) {
+ this.conversationID = conversationID;
+ }
+ /**
+ * @return the componentURI
+ */
+ public String getComponentURI() {
+ return componentURI;
+ }
+ /**
+ * @param componentURI the componentURI to set
+ */
+ public void setComponentURI(String componentURI) {
+ this.componentURI = componentURI;
+ }
+}
Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameters.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ReferenceParameters.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java?rev=572848&r1=572847&r2=572848&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java Tue Sep 4 17:32:24 2007
@@ -62,6 +62,9 @@
CallableReference<B> callableReference = component.getComponentContext().getCallableReference(null, component, service);
((CallableReferenceImpl<B>) callableReference).attachCallbackID(ThreadMessageContext.getMessageContext().getCorrelationID());
+ if (callableReference.getConversation() != null) {
+ ((CallableReferenceImpl<B>) callableReference).attachConversationID(ThreadMessageContext.getMessageContext().getConversationID());
+ }
return callableReference;
}
@@ -84,6 +87,9 @@
CallbackWireObjectFactory factory = new CallbackWireObjectFactory(javaClass, proxyFactory, wires);
factory.resolveTarget();
factory.attachCallbackID(ThreadMessageContext.getMessageContext().getCorrelationID());
+ if (factory.getConversation() != null) {
+ factory.attachConversationID(ThreadMessageContext.getMessageContext().getConversationID());
+ }
return factory;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org