summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/binding-ejb/src
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-01-29 01:00:02 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2009-01-29 01:00:02 +0000
commitbe5876e888e583881639889d99dd8ac8c2b4d5b3 (patch)
treeedc16dd242c28b700b08c742459530a0d6f2915a /branches/sca-java-1.x/modules/binding-ejb/src
parent236f45f24be98b151fe4856b2f9742827d50ef23 (diff)
Adding support for extended attributes to EJB binding
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@738687 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/binding-ejb/src')
-rw-r--r--branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java3
-rw-r--r--branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java3
-rw-r--r--branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java40
3 files changed, 42 insertions, 4 deletions
diff --git a/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java b/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java
index 271a113429..ae9d11d112 100644
--- a/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java
+++ b/branches/sca-java-1.x/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.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java b/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java
index 4abed80aa3..4a8d751608 100644
--- a/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java
+++ b/branches/sca-java-1.x/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.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java b/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
index 9a487e02d1..fb81178800 100644
--- a/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
+++ b/branches/sca-java-1.x/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;
}