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;
+ }
+
+
}