Author: lresende
Date: Thu Jan 29 01:04:17 2009
New Revision: 738691

URL: http://svn.apache.org/viewvc?rev=738691&view=rev
Log:
Adding support for extended attributes to java interface

Modified:
    
tuscany/branches/sca-java-1.x/modules/interface-java-xml/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java
    
tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterfaceContract.java
    
tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceContractImpl.java

Modified: 
tuscany/branches/sca-java-1.x/modules/interface-java-xml/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/interface-java-xml/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java?rev=738691&r1=738690&r2=738691&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/interface-java-xml/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/interface-java-xml/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java
 Thu Jan 29 01:04:17 2009
@@ -26,10 +26,13 @@
 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.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ClassReference;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
@@ -50,10 +53,17 @@
 public class JavaInterfaceProcessor implements 
StAXArtifactProcessor<JavaInterfaceContract>, JavaConstants {
 
     private JavaInterfaceFactory javaFactory;
+    private ExtensionFactory extensionFactory;
+    private StAXAttributeProcessor<Object> extensionAttributeProcessor;
     private Monitor monitor;
 
-    public JavaInterfaceProcessor(ModelFactoryExtensionPoint modelFactories, 
Monitor monitor) {
+    public JavaInterfaceProcessor(ModelFactoryExtensionPoint modelFactories, 
+                                  StAXArtifactProcessor extensionProcessor,
+                                  StAXAttributeProcessor 
extensionAttributeProcessor,
+                                  Monitor monitor) {
         this.javaFactory = 
modelFactories.getFactory(JavaInterfaceFactory.class);
+        this.extensionFactory = 
modelFactories.getFactory(ExtensionFactory.class);
+        this.extensionAttributeProcessor = extensionAttributeProcessor;
         this.monitor = monitor;
     }
     
@@ -108,6 +118,23 @@
             javaInterfaceContract.setCallbackInterface(javaCallbackInterface);
         }
 
+        // Handle extended attributes
+        for (int a = 0; a < reader.getAttributeCount(); a++) {
+            QName attributeName = reader.getAttributeName(a);
+            if( attributeName.getNamespaceURI() != null && 
attributeName.getNamespaceURI().length() > 0) {
+                if( (! 
Constants.SCA10_NS.equals(attributeName.getNamespaceURI()) && 
+                    (! 
Constants.SCA10_TUSCANY_NS.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);
+                    }
+                    
javaInterfaceContract.getAttributeExtensions().add(attributeExtension);
+                }
+            }
+        }        
         // Skip to end element
         while (reader.hasNext()) {
             if (reader.next() == END_ELEMENT && 
INTERFACE_JAVA_QNAME.equals(reader.getName())) {
@@ -131,6 +158,13 @@
         if (javaCallbackInterface != null && javaCallbackInterface.getName() 
!= null) {
             writer.writeAttribute(CALLBACK_INTERFACE, 
javaCallbackInterface.getName());
         }
+
+        // Write extended attributes
+        for(Extension extension : 
javaInterfaceContract.getAttributeExtensions()) {
+            if(extension.isAttribute()) {
+                extensionAttributeProcessor.write(extension, writer);
+            }
+        } 
         
         writer.writeEndElement();
     }

Modified: 
tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterfaceContract.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterfaceContract.java?rev=738691&r1=738690&r2=738691&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterfaceContract.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterfaceContract.java
 Thu Jan 29 01:04:17 2009
@@ -19,6 +19,7 @@
 
 package org.apache.tuscany.sca.interfacedef.java;
 
+import org.apache.tuscany.sca.assembly.Extensible;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 
 /**
@@ -27,6 +28,6 @@
  *
  * @version $Rev$ $Date$
  */
-public interface JavaInterfaceContract extends InterfaceContract {
+public interface JavaInterfaceContract extends InterfaceContract, Extensible {
 
 }

Modified: 
tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceContractImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceContractImpl.java?rev=738691&r1=738690&r2=738691&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceContractImpl.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceContractImpl.java
 Thu Jan 29 01:04:17 2009
@@ -18,6 +18,10 @@
  */
 package org.apache.tuscany.sca.interfacedef.java.impl;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.sca.assembly.Extension;
 import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractImpl;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
 
@@ -27,6 +31,8 @@
  * @version $Rev$ $Date$
  */
 public class JavaInterfaceContractImpl extends InterfaceContractImpl 
implements JavaInterfaceContract {
+    private List<Object> extensions = new ArrayList<Object>();
+    private List<Extension> attributeExtensions = new ArrayList<Extension>();
     
     protected JavaInterfaceContractImpl() {
     }
@@ -36,4 +42,13 @@
         return (JavaInterfaceContractImpl) super.clone();
     }
 
+    public List<Object> getExtensions() {
+        return extensions;
+    }
+    
+    public List<Extension> getAttributeExtensions() {
+        return attributeExtensions;
+    }
+    
+
 }


Reply via email to