You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2007/02/01 09:18:22 UTC

svn commit: r502156 - in /incubator/tuscany/java/sca/kernel/spi/src: main/java/org/apache/tuscany/spi/databinding/extension/ main/java/org/apache/tuscany/spi/implementation/java/ test/java/org/apache/tuscany/spi/databinding/extension/

Author: svkrish
Date: Thu Feb  1 00:18:21 2007
New Revision: 502156

URL: http://svn.apache.org/viewvc?view=rev&rev=502156
Log:
Refactored JavaBeans2XML mappings to JavaBeansDataBinding, added support for picking up databinding information specified as annotations for Java Component Implementation Properties

Removed:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/extension/XML2JavaMapperException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/extension/XMLType2JavaTransformer.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/extension/XMLTypeMapperExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/databinding/extension/XMLTypeMapperExtensionTestCase.java
Modified:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/AbstractPropertyProcessor.java

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java?view=diff&rev=502156&r1=502155&r2=502156
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java Thu Feb  1 00:18:21 2007
@@ -38,6 +38,11 @@
 
 public class SimpleTypeMapperExtension<T> extends XSDDataTypeConverter implements
         SimpleTypeMapper<T> {
+    
+    public static final int BASE64_ENCODING = 1;
+    public static final int HEXBIN_ENCODING = 2;
+    private int byteEncoding  = BASE64_ENCODING;
+    
     public static final String SET = "set";
 
     public static final Map<Class, String> JAVA2XML = new HashMap<Class, String>();
@@ -392,9 +397,16 @@
         } else if (obj instanceof XMLGregorianCalendar) {
             return ((XMLGregorianCalendar) obj).toXMLFormat();
         } else if (obj instanceof byte[]) {
-            if (simpleType.getQName().equals(XSD_BASE64)) {
+            if ( simpleType != null ) {
+                if ( simpleType.getQName().equals(XSD_BASE64) ) {
+                    byteEncoding = BASE64_ENCODING;
+                } else if ( simpleType.getQName().equals(XSD_HEXBIN) ) {
+                    byteEncoding = BASE64_ENCODING;
+                }
+            }
+            if (byteEncoding == BASE64_ENCODING) {
                 return printBase64Binary((byte[]) obj);
-            } else if (simpleType.getQName().equals(XSD_HEXBIN)) {
+            } else if (byteEncoding == HEXBIN_ENCODING) {
                 return printHexBinary((byte[]) obj);
             }
         } else if (obj instanceof QName) {
@@ -424,10 +436,16 @@
         if (simpleType.isSimpleType()) {
             return toSimpleJavaObject(simpleType, getText(xmlNode), context);
         } else {
-            XML2JavaMapperException xml2JavaEx =
-                    new XML2JavaMapperException("Complex XML Types not supported by SimpleTypeMapperExtension");
-            throw xml2JavaEx;
+            throw new IllegalArgumentException("Complex XML Types not supported by SimpleTypeMapperExtension");
         }
+    }
+
+    public int getByteEncoding() {
+        return byteEncoding;
+    }
+
+    public void setByteEncoding(int byteEncoding) {
+        this.byteEncoding = byteEncoding;
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/AbstractPropertyProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/AbstractPropertyProcessor.java?view=diff&rev=502156&r1=502155&r2=502156
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/AbstractPropertyProcessor.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/AbstractPropertyProcessor.java Thu Feb  1 00:18:21 2007
@@ -26,7 +26,9 @@
 import java.util.Collection;
 import java.util.Map;
 
+import org.apache.tuscany.api.annotation.DataType;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.databinding.DataBinding;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 
 /**
@@ -80,6 +82,11 @@
             property.setMany(true);
         }
         
+        //add databinding available as annotations, as extensions
+        DataType propertyDataBinding = method.getAnnotation(DataType.class);
+        if (propertyDataBinding != null) {
+            property.getExtensions().put(DataBinding.class.getName(), propertyDataBinding.name());
+        }
         initProperty(property, annotation, parent, context);
         properties.put(name, property);
     }
@@ -88,6 +95,7 @@
                            Field field,
                            PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type,
                            DeploymentContext context) throws ProcessingException {
+        
         A annotation = field.getAnnotation(annotationClass);
         if (annotation == null) {
             return;
@@ -110,6 +118,13 @@
         if (javaType.isArray() || Collection.class.isAssignableFrom(javaType)) {
             property.setMany(true);
         }        
+        
+        //add databinding available as annotations, as extensions
+        DataType propertyDataBinding = field.getAnnotation(DataType.class);
+        if (propertyDataBinding != null) {
+            property.getExtensions().put(DataBinding.class.getName(), propertyDataBinding.name());
+        }
+
         initProperty(property, annotation, parent, context);
         properties.put(name, property);
     }
@@ -126,27 +141,40 @@
         for (int i = 0; i < params.length; i++) {
             Class<?> param = params[i];
             Annotation[] paramAnnotations = annotations[i];
+            JavaMappedProperty<?> property = null;
+            DataType propertyDataBinding = null;
+            A monitorAnnot = null;
+            String name = null;
             for (Annotation annotation : paramAnnotations) {
                 if (annotation.annotationType().equals(annotationClass)) {
                     if (definition == null) {
                         definition = new ConstructorDefinition<T>(constructor);
                         type.setConstructorDefinition(definition);
                     }
-                    A monitorAnnot = annotationClass.cast(annotation);
-                    String name = getName(monitorAnnot);
+                    monitorAnnot = annotationClass.cast(annotation);
+                    name = getName(monitorAnnot);
                     if (name == null || name.length() == 0) {
                         name = param.getName();
                     }
                     
                     Class<?> baseType = getBaseType(param, constructor.getGenericParameterTypes()[i]);
-                    JavaMappedProperty<?> property = createProperty(name, baseType, constructor);
+                    property = createProperty(name, baseType, constructor);
                     if (param.isArray() || Collection.class.isAssignableFrom(param)) {
                         property.setMany(true);
                     }
-                    initProperty(property, monitorAnnot, parent, context);
-                    properties.put(name, property);
-                    service.addName(definition.getInjectionNames(), i, name);
+                } else if (annotation.annotationType().equals(DataType.class)) {
+                    propertyDataBinding = DataType.class.cast(annotation);
+                }
+            }
+            //if there has been a databinding annotation along with a property annotation then 
+            //add that information to the property
+            if (property != null && propertyDataBinding != null) {
+                if (propertyDataBinding != null) {
+                    property.getExtensions().put(DataBinding.class.getName(), propertyDataBinding.name());
                 }
+                initProperty(property, monitorAnnot, parent, context);
+                properties.put(name, property);
+                service.addName(definition.getInjectionNames(), i, name);
             }
         }
     }



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