You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/03/29 23:45:45 UTC

svn commit: r523844 - in /incubator/tuscany/java/sca/kernel: ./ core/ core/src/main/java/org/apache/tuscany/core/databinding/ core/src/main/java/org/apache/tuscany/core/implementation/ core/src/main/java/org/apache/tuscany/core/property/ core/src/main/...

Author: rfeng
Date: Thu Mar 29 14:45:40 2007
New Revision: 523844

URL: http://svn.apache.org/viewvc?view=rev&rev=523844
Log:
Integrate the core with the databinding-framework and remove databinding-related code from spi and core as now they are in submodules

Removed:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/
    incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/databinding.scdl
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/databinding/
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/databinding/
Modified:
    incubator/tuscany/java/sca/kernel/core/pom.xml
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl
    incubator/tuscany/java/sca/kernel/databinding/src/main/resources/org/apache/tuscany/core/databinding.scdl
    incubator/tuscany/java/sca/kernel/pom.xml

Modified: incubator/tuscany/java/sca/kernel/core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/pom.xml?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/pom.xml (original)
+++ incubator/tuscany/java/sca/kernel/core/pom.xml Thu Mar 29 14:45:40 2007
@@ -39,6 +39,13 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.tuscany.sca.kernel</groupId>
+            <artifactId>tuscany-core-databinding</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        
+        <dependency>
             <groupId>org.apache.tuscany</groupId>
             <artifactId>commonj-api_r1.1</artifactId>
             <version>1.0-incubator-M2</version>

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java Thu Mar 29 14:45:40 2007
@@ -73,8 +73,33 @@
         processors.remove(processor);
     }
 
+    /**
+     * JSR-250 PFD recommends the following guidelines for how annotations
+     * interact with inheritance in order to keep the resulting complexity in
+     * control:
+     * <ol>
+     * <li>Class-level annotations only affect the class they annotate and
+     * their members, that is, its methods and fields. They never affect a
+     * member declared by a superclass, even if it is not hidden or overridden
+     * by the class in question.
+     * <li>In addition to affecting the annotated class, class-level
+     * annotations may act as a shorthand for member-level annotations. If a
+     * member carries a specific member-level annotation, any annotations of the
+     * same type implied by a class-level annotation are ignored. In other
+     * words, explicit member-level annotations have priority over member-level
+     * annotations implied by a class-level annotation.
+     * <li>The interfaces implemented by a class never contribute annotations
+     * to the class itself or any of its members.
+     * <li>Members inherited from a superclass and which are not hidden or
+     * overridden maintain the annotations they had in the class that declared
+     * them, including member-level annotations implied by class-level ones.
+     * <li>Member-level annotations on a hidden or overridden member are always
+     * ignored.
+     * </ol>
+     */
     public PojoComponentType introspect(Class<?> clazz,
-                                        PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type,
+                                        PojoComponentType<JavaMappedService, 
+                                        JavaMappedReference, JavaMappedProperty<?>> type,
                                         DeploymentContext context) throws ProcessingException {
         for (ImplementationProcessor processor : processors) {
             processor.visitClass(clazz, type, context);
@@ -83,7 +108,8 @@
         for (Constructor<?> constructor : clazz.getConstructors()) {
             for (ImplementationProcessor processor : processors) {
                 processor.visitConstructor(constructor, type, context);
-                // Assuming the visitClass or visitConstructor will populate the type.getConstructors
+                // Assuming the visitClass or visitConstructor will populate the
+                // type.getConstructors
                 ConstructorDefinition<?> definition = type.getConstructors().get(constructor);
                 if (definition != null) {
                     for (Parameter p : definition.getParameters()) {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java Thu Mar 29 14:45:40 2007
@@ -24,6 +24,7 @@
 import java.net.URL;
 import java.util.Iterator;
 import java.util.Map;
+
 import javax.xml.namespace.NamespaceContext;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.xpath.XPath;
@@ -32,9 +33,7 @@
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
+import org.apache.tuscany.databinding.xml.InputStream2Node;
 import org.apache.tuscany.spi.databinding.extension.DOMHelper;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.loader.InvalidValueException;
@@ -44,8 +43,8 @@
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.PropertyValue;
-
-import org.apache.tuscany.core.databinding.xml.InputStream2Node;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
 
 /**
  * The property factory backed by the DataBindingframework

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java Thu Mar 29 14:45:40 2007
@@ -21,26 +21,24 @@
 
 import javax.xml.namespace.QName;
 
-import org.w3c.dom.Node;
-import org.osoa.sca.annotations.Constructor;
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-import org.osoa.sca.annotations.Service;
-
+import org.apache.tuscany.databinding.xml.DOMDataBinding;
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.ObjectFactory;
-import org.apache.tuscany.spi.databinding.DataBinding;
 import org.apache.tuscany.spi.databinding.DataBindingRegistry;
 import org.apache.tuscany.spi.databinding.Mediator;
 import org.apache.tuscany.spi.databinding.extension.SimpleTypeMapperExtension;
-import org.apache.tuscany.spi.model.ElementInfo;
-import org.apache.tuscany.spi.model.TypeInfo;
 import org.apache.tuscany.spi.loader.PropertyObjectFactory;
 import org.apache.tuscany.spi.model.DataType;
+import org.apache.tuscany.spi.model.ElementInfo;
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.PropertyValue;
-
-import org.apache.tuscany.core.databinding.xml.DOMDataBinding;
+import org.apache.tuscany.spi.model.TypeInfo;
+import org.apache.tuscany.spi.model.XMLType;
+import org.osoa.sca.annotations.Constructor;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+import org.w3c.dom.Node;
 
 @Service(PropertyObjectFactory.class)
 @Scope("COMPOSITE")
@@ -68,13 +66,14 @@
     public class ObjectFactoryImpl<P> implements ObjectFactory<P> {
         private Property<P> property;
         private PropertyValue<P> propertyValue;
-        private DataType<QName> sourceDataType;
+        private DataType<XMLType> sourceDataType;
         private DataType<?> targetDataType;
 
         public ObjectFactoryImpl(Property<P> property, PropertyValue<P> propertyValue) {
             this.property = property;
             this.propertyValue = propertyValue;
-            sourceDataType = new DataType<QName>(DOMDataBinding.NAME, Node.class, this.property.getXmlType());
+            sourceDataType = new DataType<XMLType>(DOMDataBinding.NAME, Node.class, 
+                new XMLType(null, this.property.getXmlType()));
             TypeInfo typeInfo = null;
             if (this.property.getXmlType() != null) {
                 if (SimpleTypeMapperExtension.isSimpleXSDType(this.property.getXmlType())) {
@@ -89,14 +88,12 @@
             ElementInfo elementInfo = new ElementInfo(null, typeInfo);
             sourceDataType.setMetadata(ElementInfo.class.getName(), elementInfo);
             Class javaType = this.property.getJavaType();
-            String dataBinding = (String) property.getExtensions().get(DataBinding.class.getName());
+            String dataBinding = (String) property.getExtensions().get("databinding");
             if (dataBinding != null) {
                 targetDataType = new DataType<Class>(dataBinding, javaType, javaType);
             } else {
-                targetDataType = registry.introspectType(javaType);
-                if (targetDataType == null) {
-                    targetDataType = new DataType<Class>("java.lang.Object", javaType, javaType);
-                }
+                targetDataType = new DataType<Class>("java.lang.Object", javaType, javaType);
+                registry.introspectType(targetDataType, null);
             }
         }
 

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/SimplePropertyObjectFactory.java Thu Mar 29 14:45:40 2007
@@ -22,9 +22,8 @@
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.databinding.extension.SimpleTypeMapperExtension;
-import org.apache.tuscany.spi.model.TypeInfo;
 import org.apache.tuscany.spi.model.Property;
-
+import org.apache.tuscany.spi.model.TypeInfo;
 import org.w3c.dom.Document;
 
 public class SimplePropertyObjectFactory<P> implements ObjectFactory<P> {
@@ -57,7 +56,7 @@
             if (xmlType == null) {
                 throw new IllegalArgumentException("Complex property is not supported.");
             }
-            instance = (P)typeMapper.toJavaObject(xmlType, text, null);
+            instance = (P)typeMapper.toJavaObject(xmlType.getQName(), text, null);
         }
         return instance;
     }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java Thu Mar 29 14:45:40 2007
@@ -20,16 +20,16 @@
 package org.apache.tuscany.core.property;
 
 import java.net.URL;
+
 import javax.xml.namespace.NamespaceContext;
 
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
+import junit.framework.TestCase;
 
+import org.apache.tuscany.databinding.xml.String2Node;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
-
-import junit.framework.TestCase;
-import org.apache.tuscany.core.databinding.xml.String2Node;
 import org.easymock.EasyMock;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
 
 /**
  *

Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl Thu Mar 29 14:45:40 2007
@@ -135,17 +135,17 @@
 
     <!-- DataBinding registry -->
     <component name="databinding.registry">
-        <system:implementation.system class="org.apache.tuscany.core.databinding.impl.DataBindingRegistryImpl"/>
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.DataBindingRegistryImpl"/>
     </component>
 
     <!-- DataBinding registry -->
     <component name="databinding.mediator">
-        <system:implementation.system class="org.apache.tuscany.core.databinding.impl.MediatorImpl"/>
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.MediatorImpl"/>
     </component>
 
     <!-- Transformer registry -->
     <component name="databinding.transformerRegistry" initLevel="90">
-        <system:implementation.system class="org.apache.tuscany.core.databinding.impl.TransformerRegistryImpl"/>
+        <system:implementation.system class="org.apache.tuscany.databinding.impl.TransformerRegistryImpl"/>
     </component>
 
     <component name="propertyFactory">

Modified: incubator/tuscany/java/sca/kernel/databinding/src/main/resources/org/apache/tuscany/core/databinding.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/databinding/src/main/resources/org/apache/tuscany/core/databinding.scdl?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/databinding/src/main/resources/org/apache/tuscany/core/databinding.scdl (original)
+++ incubator/tuscany/java/sca/kernel/databinding/src/main/resources/org/apache/tuscany/core/databinding.scdl Thu Mar 29 14:45:40 2007
@@ -36,17 +36,17 @@
     -->
 
     <!-- DataBinding registry -->
-    <component name="databinding.registry">
+    <component name="databinding.registry" initLevel="30">
         <system:implementation.system class="org.apache.tuscany.databinding.impl.DataBindingRegistryImpl" />
     </component>
 
-    <!-- DataBinding registry -->
-    <component name="databinding.mediator">
+    <!-- DataBinding Mediator -->
+    <component name="databinding.mediator" initLeve="35">
         <system:implementation.system class="org.apache.tuscany.databinding.impl.MediatorImpl" />
     </component>
 
     <!-- Transformer registry -->
-    <component name="databinding.transformerRegistry" initLevel="90">
+    <component name="databinding.transformerRegistry" initLevel="32">
         <system:implementation.system class="org.apache.tuscany.databinding.impl.TransformerRegistryImpl" />
     </component>
 

Modified: incubator/tuscany/java/sca/kernel/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/pom.xml?view=diff&rev=523844&r1=523843&r2=523844
==============================================================================
--- incubator/tuscany/java/sca/kernel/pom.xml (original)
+++ incubator/tuscany/java/sca/kernel/pom.xml Thu Mar 29 14:45:40 2007
@@ -139,6 +139,7 @@
                 <module>host-api</module>
                 <module>spi</module>
                 <module>core</module>
+                <module>databinding</module>
             </modules>
             <build>
                 <defaultGoal>install</defaultGoal>



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org