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);