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 2008/06/11 01:53:50 UTC

svn commit: r666396 - in /incubator/tuscany/java/sca/modules: core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/ core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/ databinding-jaxb/src/main/...

Author: rfeng
Date: Tue Jun 10 16:53:49 2008
New Revision: 666396

URL: http://svn.apache.org/viewvc?rev=666396&view=rev
Log:
Add an extension point for JAXB XMLAdapter

Added:
    incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/CallableReferenceXMLAdapter.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/DefaultXMLAdapterExtensionPoint.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLAdapterExtensionPoint.java   (with props)
    incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint
Modified:
    incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/GeneratedDataTypeImpl.java
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java
    incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java

Modified: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java?rev=666396&r1=666395&r2=666396&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/module/DataBindingModuleActivator.java Tue Jun 10 16:53:49 2008
@@ -26,6 +26,7 @@
 import org.apache.tuscany.sca.core.databinding.transformers.Array2ArrayTransformer;
 import org.apache.tuscany.sca.core.databinding.transformers.CallableReference2XMLStreamReader;
 import org.apache.tuscany.sca.core.databinding.transformers.CallableReferenceDataBinding;
+import org.apache.tuscany.sca.core.databinding.transformers.CallableReferenceXMLAdapter;
 import org.apache.tuscany.sca.core.databinding.transformers.Exception2ExceptionTransformer;
 import org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer;
 import org.apache.tuscany.sca.core.databinding.transformers.Output2OutputTransformer;
@@ -35,11 +36,13 @@
 import org.apache.tuscany.sca.databinding.TransformerExtensionPoint;
 import org.apache.tuscany.sca.databinding.impl.Group2GroupTransformer;
 import org.apache.tuscany.sca.databinding.impl.MediatorImpl;
+import org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint;
 import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
 import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSFaultExceptionMapper;
 import org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSJavaInterfaceProcessor;
 import org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint;
+import org.osoa.sca.CallableReference;
 
 /**
  * @version $Rev$ $Date$
@@ -49,7 +52,10 @@
     public void start(ExtensionPointRegistry registry) {
         DataBindingExtensionPoint dataBindings = registry.getExtensionPoint(DataBindingExtensionPoint.class);
         TransformerExtensionPoint transformers = registry.getExtensionPoint(TransformerExtensionPoint.class);
-        FaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings);
+
+        XMLAdapterExtensionPoint xmlAdapterExtensionPoint = registry.getExtensionPoint(XMLAdapterExtensionPoint.class);
+        xmlAdapterExtensionPoint.addAdapter(CallableReference.class, CallableReferenceXMLAdapter.class);
+        FaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings, xmlAdapterExtensionPoint);
         registry.addExtensionPoint(faultExceptionMapper);
         
         MediatorImpl mediator = new MediatorImpl(dataBindings, transformers);
@@ -81,7 +87,7 @@
 
         // [rfeng] The JAX-WS processor should come before the Databinding processor to make sure @WebService
         // is honored as Remoteable
-        javaFactory.addInterfaceVisitor(new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper));
+        javaFactory.addInterfaceVisitor(new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, xmlAdapterExtensionPoint));
 
         javaFactory.addInterfaceVisitor(new DataBindingJavaInterfaceProcessor(dataBindings));
 

Added: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/CallableReferenceXMLAdapter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/CallableReferenceXMLAdapter.java?rev=666396&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/CallableReferenceXMLAdapter.java (added)
+++ incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/CallableReferenceXMLAdapter.java Tue Jun 10 16:53:49 2008
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.core.databinding.transformers;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.tuscany.sca.databinding.xml.XMLStreamReader2String;
+import org.osoa.sca.CallableReference;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class CallableReferenceXMLAdapter extends XmlAdapter<Source, CallableReference> {
+    private TransformerFactory transformerFactory = TransformerFactory.newInstance();
+    private XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+
+    @Override
+    public CallableReference unmarshal(Source v) throws Exception {
+        StringWriter sw = new StringWriter();
+        StreamResult result = new StreamResult(sw);
+        transformerFactory.newTransformer().transform(v, result);
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(sw.toString()));
+        XMLStreamReader2CallableReference t2 = new XMLStreamReader2CallableReference();
+        return t2.transform(reader, null);
+    }
+
+    @Override
+    public Source marshal(CallableReference v) throws Exception {
+        CallableReference2XMLStreamReader t = new CallableReference2XMLStreamReader();
+        XMLStreamReader reader = t.transform(v, null);
+        XMLStreamReader2String t2 = new XMLStreamReader2String();
+        String xml = t2.transform(reader, null);
+        return new StreamSource(new StringReader(xml));
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/CallableReferenceXMLAdapter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/CallableReferenceXMLAdapter.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/DefaultXMLAdapterExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/DefaultXMLAdapterExtensionPoint.java?rev=666396&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/DefaultXMLAdapterExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/DefaultXMLAdapterExtensionPoint.java Tue Jun 10 16:53:49 2008
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.databinding.jaxb;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DefaultXMLAdapterExtensionPoint implements XMLAdapterExtensionPoint {
+    private Map<Class<?>, Class<? extends XmlAdapter<?, ?>>> adapters =
+        new ConcurrentHashMap<Class<?>, Class<? extends XmlAdapter<?, ?>>>();
+
+    public <B, A extends XmlAdapter<?, B>> void addAdapter(Class<B> boundType, Class<A> adapter) {
+        adapters.put(boundType, adapter);
+    }
+
+    @SuppressWarnings("unchecked")
+    public <B, A extends XmlAdapter<?, B>> Class<A> getAdapter(Class<B> boundType) {
+        Class<A> cls = (Class<A>)adapters.get(boundType);
+        if (cls != null) {
+            return cls;
+        }
+        for (Map.Entry<Class<?>, Class<? extends XmlAdapter<?, ?>>> e : adapters.entrySet()) {
+            if (e.getKey().isAssignableFrom(boundType)) {
+                return ((Class<A>)e.getValue());
+            }
+        }
+        return null;
+    }
+
+    @SuppressWarnings("unchecked")
+    public <B, A extends XmlAdapter<?, B>> Class<A> removeAdapter(Class<B> boundType) {
+        return (Class<A>)adapters.remove(boundType);
+    }
+
+    public Map<Class<?>, Class<? extends XmlAdapter<?, ?>>> getAdapters() {
+        return adapters;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/DefaultXMLAdapterExtensionPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/DefaultXMLAdapterExtensionPoint.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLAdapterExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLAdapterExtensionPoint.java?rev=666396&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLAdapterExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLAdapterExtensionPoint.java Tue Jun 10 16:53:49 2008
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.databinding.jaxb;
+
+import java.util.Map;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface XMLAdapterExtensionPoint {
+    /**
+     * @param <B>
+     * @param <A>
+     * @param boundType
+     * @param adapter
+     */
+    <B, A extends XmlAdapter<?, B>> void addAdapter(Class<B> boundType, Class<A> adapter);
+    /**
+     * @param <B>
+     * @param <A>
+     * @param boundType
+     * @return
+     */
+    <B, A extends XmlAdapter<?, B>> Class<A> getAdapter(Class<B> boundType);
+
+    /**
+     * @param <B>
+     * @param <A>
+     * @param boundType
+     * @return
+     */
+    <B, A extends XmlAdapter<?, B>> Class<A> removeAdapter(Class<B> boundType);
+    
+    /**
+     * @return
+     */
+    Map<Class<?>, Class<? extends XmlAdapter<?,?>>> getAdapters();
+}

Propchange: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLAdapterExtensionPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/XMLAdapterExtensionPoint.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint?rev=666396&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint (added)
+++ incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint Tue Jun 10 16:53:49 2008
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+org.apache.tuscany.sca.databinding.jaxb.DefaultXMLAdapterExtensionPoint
\ No newline at end of file

Modified: incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java?rev=666396&r1=666395&r2=666396&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/BaseBeanGenerator.java Tue Jun 10 16:53:49 2008
@@ -25,6 +25,7 @@
 import java.util.Map;
 import java.util.WeakHashMap;
 
+import org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassWriter;
 import org.objectweb.asm.FieldVisitor;
@@ -43,6 +44,8 @@
     protected static final Map<Object, Class<?>> generatedClasses =
         Collections.synchronizedMap(new WeakHashMap<Object, Class<?>>());
 
+    protected XMLAdapterExtensionPoint xmlAdapters;
+
     public byte[] defineClass(ClassWriter cw,
                               String classDescriptor,
                               String classSignature,
@@ -69,8 +72,15 @@
         if (properties != null) {
             for (BeanProperty p : properties) {
                 boolean isMap = Map.class.isAssignableFrom(p.getType());
+                String xmlAdapterClassSignature = null;
+                if (xmlAdapters != null) {
+                    Class<?> adapterClass = xmlAdapters.getAdapter(p.getType());
+                    if (adapterClass != null) {
+                        xmlAdapterClassSignature = CodeGenerationHelper.getSignature(adapterClass);
+                    }
+                }
                 declareProperty(cw, classDescriptor, classSignature, p.getName(), p.getSignature(), p
-                    .getGenericSignature(), isMap);
+                    .getGenericSignature(), isMap, xmlAdapterClassSignature);
             }
         }
 
@@ -84,11 +94,13 @@
                                    String classSignature,
                                    String propName,
                                    String propClassSignature,
-                                   String propTypeSignature, boolean isMap) {
+                                   String propTypeSignature,
+                                   boolean isMap,
+                                   String xmlAdapterClassSignature) {
         if (propClassSignature.equals(propTypeSignature)) {
             propTypeSignature = null;
         }
-        declareField(cw, propName, propClassSignature, propTypeSignature, isMap);
+        declareField(cw, propName, propClassSignature, propTypeSignature, isMap, xmlAdapterClassSignature);
         decalreGetter(cw, classDescriptor, classSignature, propName, propClassSignature, propTypeSignature);
         declareSetter(cw, classDescriptor, classSignature, propName, propClassSignature, propTypeSignature);
     }
@@ -101,7 +113,12 @@
         }
     }
 
-    protected void declareField(ClassWriter cw, String propName, String propClassSignature, String propTypeSignature, boolean isMap) {
+    protected void declareField(ClassWriter cw,
+                                String propName,
+                                String propClassSignature,
+                                String propTypeSignature,
+                                boolean isMap,
+                                String xmlAdapterClassSignature) {
         FieldVisitor fv;
         AnnotationVisitor av0;
         fv = cw.visitField(ACC_PROTECTED, getFieldName(propName), propClassSignature, propTypeSignature, null);
@@ -114,6 +131,12 @@
             av0.visitEnd();
         }
 
+        if (xmlAdapterClassSignature != null) {
+            av0 = fv.visitAnnotation("Ljavax/xml/bind/annotation/adapters/XmlJavaTypeAdapter;", true);
+            av0.visit("value", org.objectweb.asm.Type.getType(xmlAdapterClassSignature));
+            av0.visitEnd();
+        }
+
         fv.visitEnd();
     }
 
@@ -151,7 +174,7 @@
         mv.visitEnd();
 
     }
-    
+
     protected void decalreGetter(ClassWriter cw,
                                  String classDescriptor,
                                  String classSignature,
@@ -160,7 +183,13 @@
                                  String propTypeSignature) {
         String collectionImplClass = COLLECTION_CLASSES.get(propClassSignature);
         if (collectionImplClass != null) {
-            decalreCollectionGetter(cw, classDescriptor, classSignature, propName, propClassSignature, propTypeSignature, collectionImplClass);
+            decalreCollectionGetter(cw,
+                                    classDescriptor,
+                                    classSignature,
+                                    propName,
+                                    propClassSignature,
+                                    propTypeSignature,
+                                    collectionImplClass);
             return;
         }
 
@@ -183,12 +212,12 @@
     }
 
     protected void decalreCollectionGetter(ClassWriter cw,
-                                     String classDescriptor,
-                                     String classSignature,
-                                     String propName,
-                                     String propClassSignature,
-                                     String propTypeSignature, 
-                                     String collectionImplClass) {
+                                           String classDescriptor,
+                                           String classSignature,
+                                           String propName,
+                                           String propClassSignature,
+                                           String propTypeSignature,
+                                           String collectionImplClass) {
         String getterName = "get" + capitalize(propName);
         String fieldName = getFieldName(propName);
         MethodVisitor mv =
@@ -319,4 +348,12 @@
             return type;
         }
     }
+
+    public XMLAdapterExtensionPoint getXmlAdapters() {
+        return xmlAdapters;
+    }
+
+    public void setXmlAdapters(XMLAdapterExtensionPoint xmlAdapters) {
+        this.xmlAdapters = xmlAdapters;
+    }
 }

Modified: incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/GeneratedDataTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/GeneratedDataTypeImpl.java?rev=666396&r1=666395&r2=666396&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/GeneratedDataTypeImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/GeneratedDataTypeImpl.java Tue Jun 10 16:53:49 2008
@@ -25,6 +25,7 @@
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.databinding.jaxb.JAXBDataBinding;
+import org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.util.XMLType;
 
@@ -33,6 +34,8 @@
  * @version $Rev$ $Date$
  */
 public class GeneratedDataTypeImpl implements DataType<XMLType> {
+    private XMLAdapterExtensionPoint xmlAdapters;
+    
     private Class<?> physical;
     private XMLType logical;
 
@@ -45,15 +48,17 @@
 
     private Class<? extends Throwable> exceptionClass;
 
-    public GeneratedDataTypeImpl(Class<? extends Throwable> exceptionClass, GeneratedClassLoader cl) {
+    public GeneratedDataTypeImpl(XMLAdapterExtensionPoint xmlAdapters, Class<? extends Throwable> exceptionClass, GeneratedClassLoader cl) {
         super();
         this.exceptionClass = exceptionClass;
         this.cl = cl;
         QName name = FaultBeanGenerator.getElementName(exceptionClass);
         this.logical = new XMLType(name, name);
+        this.xmlAdapters = xmlAdapters;
     }
 
-    public GeneratedDataTypeImpl(Method m,
+    public GeneratedDataTypeImpl(XMLAdapterExtensionPoint xmlAdapters,
+                                 Method m,
                                  String wrapperClassName,
                                  String wrapperNamespace,
                                  String wrapperName,
@@ -68,6 +73,7 @@
         this.request = request;
         QName name = new QName(wrapperNamespace, wrapperName);
         this.logical = new XMLType(name, name);
+        this.xmlAdapters = xmlAdapters;
     }
 
     public String getDataBinding() {
@@ -86,12 +92,15 @@
         if (physical == null) {
             if (m != null) {
                 WrapperBeanGenerator generator = new WrapperBeanGenerator();
+                generator.setXmlAdapters(xmlAdapters);
                 physical =
                     request ? generator.generateRequestWrapper(m, wrapperClassName, wrapperNamespace, wrapperName, cl)
                         : generator.generateResponseWrapper(m, wrapperClassName, wrapperNamespace, wrapperName, cl);
                 ;
             } else if (exceptionClass != null) {
-                physical = new FaultBeanGenerator().generate(exceptionClass, cl);
+                FaultBeanGenerator faultBeanGenerator = new FaultBeanGenerator();
+                faultBeanGenerator.setXmlAdapters(xmlAdapters);
+                physical = faultBeanGenerator.generate(exceptionClass, cl);
             }
         }
         return physical;

Modified: incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java?rev=666396&r1=666395&r2=666396&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSFaultExceptionMapper.java Tue Jun 10 16:53:49 2008
@@ -31,6 +31,7 @@
 import javax.xml.ws.WebFault;
 
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
+import org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
 import org.apache.tuscany.sca.interfacedef.Operation;
@@ -52,10 +53,13 @@
 
     private static final Class<?>[] EMPTY_CLASS_ARRAY = new Class[0];
     private DataBindingExtensionPoint dataBindingExtensionPoint;
+    private XMLAdapterExtensionPoint xmlAdapterExtensionPoint;
 
-    public JAXWSFaultExceptionMapper(DataBindingExtensionPoint dataBindingExtensionPoint) {
+
+    public JAXWSFaultExceptionMapper(DataBindingExtensionPoint dataBindingExtensionPoint, XMLAdapterExtensionPoint xmlAdapters) {
         super();
         this.dataBindingExtensionPoint = dataBindingExtensionPoint;
+        this.xmlAdapterExtensionPoint = xmlAdapters;
     }
 
     /**
@@ -300,7 +304,7 @@
                         if (generatingFaultBean) {
                             Class<? extends Throwable> t = (Class<? extends Throwable>)cls;
                             GeneratedClassLoader cl = new GeneratedClassLoader(t.getClassLoader());
-                            GeneratedDataTypeImpl dt = new GeneratedDataTypeImpl(t, cl);
+                            GeneratedDataTypeImpl dt = new GeneratedDataTypeImpl(xmlAdapterExtensionPoint, t, cl);
                             return dt;
                         } else {
                             return new DataTypeImpl<XMLType>(cls, new XMLType(qname, qname));

Modified: incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java?rev=666396&r1=666395&r2=666396&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-jaxws/src/main/java/org/apache/tuscany/sca/interfacedef/java/jaxws/JAXWSJavaInterfaceProcessor.java Tue Jun 10 16:53:49 2008
@@ -41,6 +41,8 @@
 
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.sca.databinding.javabeans.JavaExceptionDataBinding;
+import org.apache.tuscany.sca.databinding.jaxb.JAXBDataBinding;
+import org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.FaultExceptionMapper;
 import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
@@ -60,17 +62,20 @@
  * @version $Rev$ $Date$
  */
 public class JAXWSJavaInterfaceProcessor implements JavaInterfaceVisitor {
-    private static final String JAXB_DATABINDING = "javax.xml.bind.JAXBElement";
-    private static final String SCHEMA_NS = "http://www.w3.org/2001/XMLSchema";
+    private static final String JAXB_DATABINDING = JAXBDataBinding.NAME;
     private static final String GET = "get";
     private DataBindingExtensionPoint dataBindingExtensionPoint;
     private FaultExceptionMapper faultExceptionMapper;
+    private XMLAdapterExtensionPoint xmlAdapterExtensionPoint;
+
 
     public JAXWSJavaInterfaceProcessor(DataBindingExtensionPoint dataBindingExtensionPoint,
-                                       FaultExceptionMapper faultExceptionMapper) {
+                                       FaultExceptionMapper faultExceptionMapper,
+                                       XMLAdapterExtensionPoint xmlAdapters) {
         super();
         this.dataBindingExtensionPoint = dataBindingExtensionPoint;
         this.faultExceptionMapper = faultExceptionMapper;
+        this.xmlAdapterExtensionPoint = xmlAdapters;
     }
 
     public JAXWSJavaInterfaceProcessor() {
@@ -201,7 +206,7 @@
                             return dt;
                         } catch (ClassNotFoundException e) {
                             GeneratedClassLoader cl = new GeneratedClassLoader(clazz.getClassLoader());
-                            return new GeneratedDataTypeImpl(method, inputWrapperClassName, inputNS, inputName, true,
+                            return new GeneratedDataTypeImpl(xmlAdapterExtensionPoint, method, inputWrapperClassName, inputNS, inputName, true,
                                                              cl);
                         }
                     }
@@ -236,7 +241,7 @@
                             return dt;
                         } catch (ClassNotFoundException e) {
                             GeneratedClassLoader cl = new GeneratedClassLoader(clazz.getClassLoader());
-                            return new GeneratedDataTypeImpl(method, outputWrapperClassName, outputNS, outputName,
+                            return new GeneratedDataTypeImpl(xmlAdapterExtensionPoint, method, outputWrapperClassName, outputNS, outputName,
                                                              false, cl);
                         }
                     }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java?rev=666396&r1=666395&r2=666396&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Java2WSDLGeneratorTestCase.java Tue Jun 10 16:53:49 2008
@@ -48,8 +48,8 @@
         DefaultJavaInterfaceFactory iFactory = new DefaultJavaInterfaceFactory();
         JavaInterface iface = iFactory.createJavaInterface(TestJavaInterface.class);
         DefaultDataBindingExtensionPoint dataBindings = new DefaultDataBindingExtensionPoint();
-        JAXWSFaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings);
-        new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper).visitInterface(iface);
+        JAXWSFaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings, null);
+        new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface);
         new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface);
         DefaultModelFactoryExtensionPoint modelFactories = new DefaultModelFactoryExtensionPoint();
         WSDLDefinition wsdlDefinition = new DefaultWSDLFactory(modelFactories).createWSDLDefinition();

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java?rev=666396&r1=666395&r2=666396&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/java2wsdl/Java2WSDLHelperTestCase.java Tue Jun 10 16:53:49 2008
@@ -76,8 +76,8 @@
         JavaInterfaceContract javaIC = factory.createJavaInterfaceContract();
         JavaInterface iface = factory.createJavaInterface(HelloWorld.class);
         DefaultDataBindingExtensionPoint dataBindings = new DefaultDataBindingExtensionPoint();
-        JAXWSFaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings);
-        new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper).visitInterface(iface);
+        JAXWSFaultExceptionMapper faultExceptionMapper = new JAXWSFaultExceptionMapper(dataBindings, null);
+        new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface);
         new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface);
         javaIC.setInterface(iface);
         WSDLInterfaceContract wsdlIC = Java2WSDLHelper.createWSDLInterfaceContract(javaIC, new XSDModelResolver(null, null), dataBindings, wsdlFactory, xsdFactory);
@@ -90,7 +90,7 @@
  
         JavaInterfaceContract javaIC2 = factory.createJavaInterfaceContract();
         JavaInterface iface2 = factory.createJavaInterface(TestJavaInterface.class);
-        new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper).visitInterface(iface2);
+        new JAXWSJavaInterfaceProcessor(dataBindings, faultExceptionMapper, null).visitInterface(iface2);
         new DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface2);
         javaIC2.setInterface(iface2);
         WSDLInterfaceContract wsdlIC2 = Java2WSDLHelper.createWSDLInterfaceContract(javaIC2, new XSDModelResolver(null, null), dataBindings, wsdlFactory, xsdFactory);