Author: lresende
Date: Thu Jan 29 00:57:03 2009
New Revision: 738685
URL: http://svn.apache.org/viewvc?rev=738685&view=rev
Log:
Adding support for extended attributes to webservices binding
Modified:
tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/test/java/org/apache/tuscany/sca/binding/ws/xml/WriteTestCase.java
tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
Modified:
tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java?rev=738685&r1=738684&r2=738685&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
Thu Jan 29 00:57:03 2009
@@ -23,6 +23,7 @@
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
import java.util.Map;
+
import javax.wsdl.Binding;
import javax.wsdl.Port;
import javax.wsdl.PortType;
@@ -33,6 +34,8 @@
import javax.xml.stream.XMLStreamWriter;
import org.apache.tuscany.sca.assembly.ConfiguredOperation;
+import org.apache.tuscany.sca.assembly.Extension;
+import org.apache.tuscany.sca.assembly.ExtensionFactory;
import org.apache.tuscany.sca.assembly.OperationsConfigurator;
import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
import org.apache.tuscany.sca.assembly.xml.ConfiguredOperationProcessor;
@@ -42,7 +45,9 @@
import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXAttributeProcessor;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
@@ -74,17 +79,21 @@
private WSDLFactory wsdlFactory;
private WebServiceBindingFactory wsFactory;
private PolicyFactory policyFactory;
+ private ExtensionFactory extensionFactory;
private PolicyAttachPointProcessor policyProcessor;
private IntentAttachPointTypeFactory intentAttachPointTypeFactory;
private ConfiguredOperationProcessor configuredOperationProcessor;
+ private StAXAttributeProcessor<Object> extensionAttributeProcessor;
private Monitor monitor;
public WebServiceBindingProcessor(ExtensionPointRegistry extensionPoints) {
+
this.extensionPoints = extensionPoints;
ModelFactoryExtensionPoint modelFactories =
extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
this.policyFactory = modelFactories.getFactory(PolicyFactory.class);
this.wsFactory = new DefaultWebServiceBindingFactory();
this.wsdlFactory = modelFactories.getFactory(WSDLFactory.class);
+ this.extensionFactory =
modelFactories.getFactory(ExtensionFactory.class);
this.policyProcessor = new PolicyAttachPointProcessor(policyFactory);
this.intentAttachPointTypeFactory =
modelFactories.getFactory(IntentAttachPointTypeFactory.class);
UtilityExtensionPoint utilities =
extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
@@ -93,6 +102,7 @@
this.monitor = monitorFactory.createMonitor();
}
this.configuredOperationProcessor = new
ConfiguredOperationProcessor(modelFactories, this.monitor);
+ this.extensionAttributeProcessor =
extensionPoints.getExtensionPoint(ExtensibleStAXAttributeProcessor.class);
}
/**
@@ -223,6 +233,25 @@
// Read wsdlLocation
wsBinding.setLocation(reader.getAttributeValue(WSDLI_NS,
WSDL_LOCATION));
+
+ // Handle extended attributes
+ QName elementName = reader.getName();
+ for (int a = 0; a < reader.getAttributeCount(); a++) {
+ QName attributeName = reader.getAttributeName(a);
+ if( attributeName.getNamespaceURI() != null &&
attributeName.getNamespaceURI() != WSDLI_NS &&
attributeName.getNamespaceURI().length() > 0) {
+ if( !
elementName.getNamespaceURI().equals(attributeName.getNamespaceURI()) ) {
+ Object attributeValue =
extensionAttributeProcessor.read(attributeName, reader);
+ Extension attributeExtension;
+ if (attributeValue instanceof Extension) {
+ attributeExtension = (Extension) attributeValue;
+ } else {
+ attributeExtension =
extensionFactory.createExtension(attributeName, attributeValue, true);
+ }
+ wsBinding.getAttributeExtensions().add(attributeExtension);
+ }
+ }
+ }
+
ConfiguredOperation confOp = null;
// Skip to end element
@@ -322,6 +351,12 @@
writer.writeAttribute(WSDLI_NS, WSDL_LOCATION,
wsBinding.getLocation());
}
+ for(Extension extension : wsBinding.getAttributeExtensions()) {
+ if(extension.isAttribute()) {
+ extensionAttributeProcessor.write(extension, writer);
+ }
+ }
+
if (wsBinding.getEndPointReference() != null) {
EndPointReferenceHelper.writeEndPointReference(wsBinding.getEndPointReference(),
writer);
}
Modified:
tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/test/java/org/apache/tuscany/sca/binding/ws/xml/WriteTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/test/java/org/apache/tuscany/sca/binding/ws/xml/WriteTestCase.java?rev=738685&r1=738684&r2=738685&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/test/java/org/apache/tuscany/sca/binding/ws/xml/WriteTestCase.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-ws-xml/src/test/java/org/apache/tuscany/sca/binding/ws/xml/WriteTestCase.java
Thu Jan 29 00:57:03 2009
@@ -27,12 +27,13 @@
import junit.framework.TestCase;
-import org.apache.tuscany.sca.assembly.ComponentType;
import org.apache.tuscany.sca.assembly.Composite;
import
org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
+import
org.apache.tuscany.sca.contribution.processor.DefaultStAXAttributeProcessorExtensionPoint;
import
org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
+import
org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessorExtensionPoint;
import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
/**
@@ -52,6 +53,7 @@
inputFactory = XMLInputFactory.newInstance();
outputFactory = XMLOutputFactory.newInstance();
StAXArtifactProcessorExtensionPoint staxProcessors = new
DefaultStAXArtifactProcessorExtensionPoint(extensionPoints);
+ StAXAttributeProcessorExtensionPoint staxAttributeProcessors = new
DefaultStAXAttributeProcessorExtensionPoint(extensionPoints);
staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors,
inputFactory, outputFactory, null);
}
/*
Modified:
tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java?rev=738685&r1=738684&r2=738685&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
Thu Jan 29 00:57:03 2009
@@ -24,6 +24,7 @@
import javax.xml.namespace.QName;
import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Extensible;
import org.apache.tuscany.sca.assembly.builder.BindingBuilderExtension;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
@@ -35,7 +36,7 @@
*
* @version $Rev$ $Date$
*/
-public interface WebServiceBinding extends Binding, BindingBuilderExtension {
+public interface WebServiceBinding extends Binding, BindingBuilderExtension,
Extensible {
/**
* Sets the WSDL location.
Modified:
tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java?rev=738685&r1=738684&r2=738685&view=diff
==============================================================================
---
tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
(original)
+++
tuscany/branches/sca-java-1.x/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
Thu Jan 29 00:57:03 2009
@@ -29,7 +29,6 @@
import javax.xml.namespace.QName;
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.OperationsConfigurator;
import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
@@ -49,7 +48,7 @@
*
* @version $Rev$ $Date$
*/
-class WebServiceBindingImpl implements WebServiceBinding,
PolicySetAttachPoint, Extensible, OperationsConfigurator {
+class WebServiceBindingImpl implements WebServiceBinding,
PolicySetAttachPoint, OperationsConfigurator {
private String name;
private String uri;
private boolean unresolved;