diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-01-29 02:43:08 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-01-29 02:43:08 +0000 |
commit | b00d62abdd330759cf7222cafd0210e5d70109bd (patch) | |
tree | ef6cda4ab6302f3021126dcbe7f25e924c7561f9 /branches/sca-java-1.3.3/modules/binding-ejb/src/main/java | |
parent | ef58ca099bcd509b326fc592d5221b99e1faf89a (diff) |
TUSCANY-2463 - Merging changes to add extended attribute support for various bindings (ws, ejb, etc), interface java and wsdl, and implementation java
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@738721 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.3.3/modules/binding-ejb/src/main/java')
3 files changed, 47 insertions, 4 deletions
diff --git a/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java b/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java index 271a113429..ae9d11d112 100644 --- a/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java +++ b/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java @@ -22,6 +22,7 @@ import javax.xml.namespace.QName; import org.apache.tuscany.sca.assembly.Base; import org.apache.tuscany.sca.assembly.Binding; +import org.apache.tuscany.sca.assembly.Extensible; import org.apache.tuscany.sca.assembly.xml.Constants; /** @@ -29,7 +30,7 @@ import org.apache.tuscany.sca.assembly.xml.Constants; * * @version $Rev$ $Date$ */ -public interface EJBBinding extends Binding, Base { +public interface EJBBinding extends Binding, Extensible, Base { // Constants used when describing the EJB binding // model and for setting up defaults String BINDING_EJB = "binding.ejb"; diff --git a/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java b/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java index e601ea28f8..912df7c666 100644 --- a/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java +++ b/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java @@ -18,6 +18,7 @@ */ package org.apache.tuscany.sca.binding.ejb.impl; +import org.apache.tuscany.sca.assembly.impl.ExtensibleImpl; import org.apache.tuscany.sca.binding.ejb.EJBBinding; /** @@ -25,7 +26,7 @@ import org.apache.tuscany.sca.binding.ejb.EJBBinding; * * @version $Rev$ $Date$ */ -public class EJBBindingImpl implements EJBBinding { +public class EJBBindingImpl extends ExtensibleImpl implements EJBBinding { /** * CORBA location For example, diff --git a/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java b/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java index 9a487e02d1..f4392de7ce 100644 --- a/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java +++ b/branches/sca-java-1.3.3/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java @@ -23,18 +23,25 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; +import org.apache.tuscany.sca.assembly.Extension; +import org.apache.tuscany.sca.assembly.ExtensionFactory; import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl; import org.apache.tuscany.sca.assembly.xml.Constants; import org.apache.tuscany.sca.assembly.xml.PolicyAttachPointProcessor; import org.apache.tuscany.sca.binding.ejb.EJBBinding; 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; import org.apache.tuscany.sca.contribution.service.ContributionWriteException; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.core.UtilityExtensionPoint; import org.apache.tuscany.sca.policy.PolicyFactory; import org.apache.tuscany.sca.monitor.Monitor; +import org.apache.tuscany.sca.monitor.MonitorFactory; import org.apache.tuscany.sca.monitor.Problem; import org.apache.tuscany.sca.monitor.Problem.Severity; @@ -60,13 +67,24 @@ import org.apache.tuscany.sca.monitor.Problem.Severity; */ public class EJBBindingProcessor implements StAXArtifactProcessor<EJBBindingImpl> { private PolicyFactory policyFactory; + private ExtensionFactory extensionFactory; private PolicyAttachPointProcessor policyProcessor; + private StAXAttributeProcessor<Object> extensionAttributeProcessor; private Monitor monitor; - public EJBBindingProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) { + public EJBBindingProcessor(ExtensionPointRegistry extensionPoints) { + ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class); + this.policyFactory = modelFactories.getFactory(PolicyFactory.class); + this.extensionFactory = modelFactories.getFactory(ExtensionFactory.class); this.policyProcessor = new PolicyAttachPointProcessor(policyFactory); - this.monitor = monitor; + this.extensionAttributeProcessor = extensionPoints.getExtensionPoint(ExtensibleStAXAttributeProcessor.class); + + UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); + MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class); + if (monitorFactory != null) { + this.monitor = monitorFactory.createMonitor(); + } } /** @@ -151,6 +169,24 @@ public class EJBBindingProcessor implements StAXArtifactProcessor<EJBBindingImpl ejbBinding.setRequires(requires); } + // 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().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); + } + ejbBinding.getAttributeExtensions().add(attributeExtension); + } + } + } + return ejbBinding; } @@ -167,6 +203,11 @@ public class EJBBindingProcessor implements StAXArtifactProcessor<EJBBindingImpl writer.writeAttribute(EJBBinding.URI, ejbBinding.getURI()); } + for(Extension extension : ejbBinding.getAttributeExtensions()) { + if(extension.isAttribute()) { + extensionAttributeProcessor.write(extension, writer); + } + } // FIXME Implement the rest |