Author: lresende
Date: Thu Jan 29 01:00:02 2009
New Revision: 738687

URL: http://svn.apache.org/viewvc?rev=738687&view=rev
Log:
Adding support for extended attributes to EJB binding

Modified:
    
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java
    
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java
    
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java?rev=738687&r1=738686&r2=738687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/EJBBinding.java
 Thu Jan 29 01:00:02 2009
@@ -22,6 +22,7 @@
 
 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 @@
  *
  * @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";

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java?rev=738687&r1=738686&r2=738687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingImpl.java
 Thu Jan 29 01:00:02 2009
@@ -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 @@
  *
  * @version $Rev$ $Date$
  */
-public class EJBBindingImpl implements EJBBinding {
+public class EJBBindingImpl extends ExtensibleImpl implements EJBBinding {
 
     /**
      * CORBA location For example,

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java?rev=738687&r1=738686&r2=738687&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-ejb/src/main/java/org/apache/tuscany/sca/binding/ejb/impl/EJBBindingProcessor.java
 Thu Jan 29 01:00:02 2009
@@ -23,18 +23,25 @@
 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 @@
  */
 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 @@
             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;
     }
 


Reply via email to