Author: antelder
Date: Tue Nov 15 11:35:47 2011
New Revision: 1202136
URL: http://svn.apache.org/viewvc?rev=1202136&view=rev
Log:
Update the JMS binding to support attribute extensions in the scdl
Modified:
tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java
tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java
Modified:
tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java?rev=1202136&r1=1202135&r2=1202136&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBinding.java
Tue Nov 15 11:35:47 2011
@@ -30,6 +30,8 @@ import javax.xml.namespace.QName;
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.ConfiguredOperation;
+import org.apache.tuscany.sca.assembly.Extensible;
+import org.apache.tuscany.sca.assembly.Extension;
import org.apache.tuscany.sca.assembly.OperationSelector;
import org.apache.tuscany.sca.assembly.OperationsConfigurator;
import org.apache.tuscany.sca.assembly.WireFormat;
@@ -45,7 +47,7 @@ import org.apache.tuscany.sca.policy.Pol
*/
//public class JMSBinding implements BindingRRB, PolicySubject,
OperationsConfigurator, DefinitionElement {
-public class JMSBinding implements Binding, PolicySubject,
OperationsConfigurator {
+public class JMSBinding implements Binding, PolicySubject,
OperationsConfigurator, Extensible {
QName TYPE = new QName(SCA11_NS, "binding.jms");
@Override
@@ -58,6 +60,8 @@ public class JMSBinding implements Bindi
private String name = null;
private boolean unresolved = false;
private List<Object> extensions = new ArrayList<Object>();
+
+ private List<Extension> attributeExtensions = new ArrayList<Extension>();
// properties required by PolicySetAttachPoint
private List<PolicySet> policySets = new ArrayList<PolicySet>();
@@ -163,7 +167,7 @@ public class JMSBinding implements Bindi
private final Boolean defaultDeliveryMode = true;
private final Long defaultJMSTimeToLive =Long.valueOf(0);
private boolean isDestinationSpecified = false;
-
+
public JMSBinding() {
super();
}
@@ -1090,5 +1094,10 @@ public class JMSBinding implements Bindi
public void setURIJMSSelector(String selector) {
this.uriJmsSelector = selector;
}
+
+ @Override
+ public List<Extension> getAttributeExtensions() {
+ return attributeExtensions;
+ }
}
Modified:
tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java?rev=1202136&r1=1202135&r2=1202136&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/JMSBindingProcessor.java
Tue Nov 15 11:35:47 2011
@@ -31,12 +31,17 @@ import java.util.Set;
import java.util.StringTokenizer;
import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Base;
import org.apache.tuscany.sca.assembly.ConfiguredOperation;
+import org.apache.tuscany.sca.assembly.Extensible;
+import org.apache.tuscany.sca.assembly.Extension;
import org.apache.tuscany.sca.assembly.OperationSelector;
import org.apache.tuscany.sca.assembly.OperationsConfigurator;
import org.apache.tuscany.sca.assembly.WireFormat;
@@ -53,9 +58,13 @@ import org.apache.tuscany.sca.contributi
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
import
org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
import
org.apache.tuscany.sca.contribution.processor.ContributionWriteException;
+import
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXAttributeProcessor;
import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor;
+import
org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessorExtensionPoint;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.Problem;
@@ -138,16 +147,24 @@ import org.apache.tuscany.sca.policy.Pol
public class JMSBindingProcessor extends BaseStAXArtifactProcessor implements
StAXArtifactProcessor<JMSBinding> {
private PolicyFactory policyFactory;
private PolicySubjectProcessor policyProcessor;
+ private AssemblyFactory assemblyFactory;
private ConfiguredOperationProcessor configuredOperationProcessor;
protected StAXArtifactProcessor<Object> extensionProcessor;
+ private StAXAttributeProcessor<Object> extensionAttributeProcessor;
+ private ProcessorContext processorContext;
- public JMSBindingProcessor(FactoryExtensionPoint modelFactories,
StAXArtifactProcessor<Object> extensionProcessor) {
+ public JMSBindingProcessor(ExtensionPointRegistry extensionPoints,
StAXArtifactProcessor<Object> extensionProcessor) {
+ this.extensionProcessor = extensionProcessor;
+ FactoryExtensionPoint modelFactories =
extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+ this.assemblyFactory =
modelFactories.getFactory(AssemblyFactory.class);
this.policyFactory = modelFactories.getFactory(PolicyFactory.class);
this.policyProcessor = new PolicySubjectProcessor(policyFactory);
-
- this.configuredOperationProcessor =
- new ConfiguredOperationProcessor(modelFactories);
- this.extensionProcessor = extensionProcessor;
+ this.configuredOperationProcessor = new
ConfiguredOperationProcessor(modelFactories);
+ XMLInputFactory inputFactory =
extensionPoints.getExtensionPoint(XMLInputFactory.class);
+ XMLOutputFactory outputFactory =
extensionPoints.getExtensionPoint(XMLOutputFactory.class);
+ StAXAttributeProcessorExtensionPoint attributeExtensionPoint =
extensionPoints.getExtensionPoint(StAXAttributeProcessorExtensionPoint.class);
+ this.extensionAttributeProcessor = new
ExtensibleStAXAttributeProcessor(attributeExtensionPoint ,inputFactory,
outputFactory);
+ this.processorContext = new ProcessorContext(extensionPoints);
}
/**
@@ -270,6 +287,27 @@ public class JMSBindingProcessor extends
jmsBinding.setOperationPropertiesName(getQNameValue(reader,
operationPropertiesName));
}
+ //add binding extensions
+ QName elementQName = reader.getName();
+ for (int i = 0; i < reader.getAttributeCount(); i++) {
+ QName attributeName = reader.getAttributeName(i);
+ if(attributeName.getNamespaceURI() != null &&
attributeName.getNamespaceURI().length() > 0) {
+
if(!elementQName.getNamespaceURI().equals(attributeName.getNamespaceURI()) ) {
+ Object attributeValue =
extensionAttributeProcessor.read(attributeName, reader, processorContext);
+ Extension attributeExtension;
+ if (attributeValue instanceof Extension) {
+ attributeExtension = (Extension)attributeValue;
+ } else {
+ attributeExtension = assemblyFactory.createExtension();
+ attributeExtension.setQName(attributeName);
+ attributeExtension.setValue(attributeValue);
+ attributeExtension.setAttribute(true);
+ }
+
((Extensible)jmsBinding).getAttributeExtensions().add(attributeExtension);
+ }
+ }
+ }
+
// Read sub-elements of binding.jms
boolean endFound = false;
while (!endFound) {
@@ -1097,6 +1135,13 @@ public class JMSBindingProcessor extends
writer.writeAttribute("jndiURL", jmsBinding.getJndiURL());
}
+ // Write extended attributes
+ for(Extension extension :
((Extensible)jmsBinding).getAttributeExtensions()) {
+ if(extension.isAttribute()) {
+ extensionAttributeProcessor.write(extension, writer,
processorContext);
+ }
+ }
+
if ( jmsBinding.containsHeaders() ) {
writeHeaders( jmsBinding, writer);
}