Author: rfeng
Date: Tue Jun 10 22:24:15 2008
New Revision: 666532
URL: http://svn.apache.org/viewvc?rev=666532&view=rev
Log:
Bring up the Generics databinding test cases
Modified:
incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsDatabindingTestCase.java
incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/StandardTypesDatabindingTestCase.java
incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java
incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.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/src/main/java/org/apache/tuscany/sca/interfacedef/DataType.java
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/DataTypeImpl.java
Modified:
incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsDatabindingTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsDatabindingTestCase.java?rev=666532&r1=666531&r2=666532&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsDatabindingTestCase.java
(original)
+++
incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsDatabindingTestCase.java
Tue Jun 10 22:24:15 2008
@@ -25,7 +25,6 @@
import org.apache.tuscany.sca.itest.databindings.jaxb.impl.GenericsTransformer;
import org.junit.AfterClass;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -82,7 +81,7 @@
* Service method invoked is getTypeExtends.
*/
@Test
- @Ignore("java.lang.IllegalArgumentException:
javax.xml.bind.MarshalException")
+ // @Ignore("java.lang.IllegalArgumentException:
javax.xml.bind.MarshalException")
public void testSCATypeExtends() throws Exception {
GenericsServiceClient serviceClient =
domain.getService(GenericsServiceClient.class,
"GenericsServiceClientSCAComponent");
performTestTypeExtends(serviceClient);
@@ -114,7 +113,7 @@
* Service method invoked is getWildcardSuper.
*/
@Test
- @Ignore("java.lang.IllegalArgumentException:
javax.xml.bind.MarshalException")
+ // @Ignore("java.lang.IllegalArgumentException:
javax.xml.bind.MarshalException")
public void testSCAWildcardSuper() throws Exception {
GenericsServiceClient serviceClient =
domain.getService(GenericsServiceClient.class,
"GenericsServiceClientSCAComponent");
performTestWildcardSuper(serviceClient);
@@ -125,7 +124,7 @@
* Service method invoked is getWildcardExtends.
*/
@Test
- @Ignore("java.lang.IllegalArgumentException:
javax.xml.bind.MarshalException")
+ // @Ignore("java.lang.IllegalArgumentException:
javax.xml.bind.MarshalException")
public void testSCAWildcardExtends() throws Exception {
GenericsServiceClient serviceClient =
domain.getService(GenericsServiceClient.class,
"GenericsServiceClientSCAComponent");
performTestWildcardExtends(serviceClient);
@@ -167,7 +166,7 @@
* Service method invoked is getTypeExtends.
*/
@Test
- @Ignore("org.osoa.sca.ServiceRuntimeException: org.apache.axis2.AxisFault:
com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog at [row,col
{unknown-source}]: [1,0]")
+ // @Ignore("org.osoa.sca.ServiceRuntimeException:
org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF
in prolog at [row,col {unknown-source}]: [1,0]")
public void testWSTypeExtends() throws Exception {
GenericsServiceClient serviceClient =
domain.getService(GenericsServiceClient.class,
"GenericsServiceClientWSComponent");
performTestTypeExtends(serviceClient);
@@ -199,7 +198,7 @@
* Service method invoked is getWildcardSuper.
*/
@Test
- @Ignore("org.osoa.sca.ServiceRuntimeException: org.apache.axis2.AxisFault")
+ // @Ignore("org.osoa.sca.ServiceRuntimeException:
org.apache.axis2.AxisFault")
public void testWSWildcardSuper() throws Exception {
GenericsServiceClient serviceClient =
domain.getService(GenericsServiceClient.class,
"GenericsServiceClientWSComponent");
performTestWildcardSuper(serviceClient);
@@ -210,7 +209,7 @@
* Service method invoked is getWildcardExtends.
*/
@Test
- @Ignore("org.osoa.sca.ServiceRuntimeException: org.apache.axis2.AxisFault")
+ // @Ignore("org.osoa.sca.ServiceRuntimeException:
org.apache.axis2.AxisFault")
public void testWSWildcardExtends() throws Exception {
GenericsServiceClient serviceClient =
domain.getService(GenericsServiceClient.class,
"GenericsServiceClientWSComponent");
performTestWildcardExtends(serviceClient);
@@ -221,7 +220,7 @@
* Service method invoked is getPolymorphic.
*/
@Test
- @Ignore("junit.framework.AssertionFailedError: expected:<Bean3[name = Me,
address = My address]> but was:<Bean2[name = Me]>")
+ // @Ignore("junit.framework.AssertionFailedError: expected:<Bean3[name =
Me, address = My address]> but was:<Bean2[name = Me]>")
public void testWSPolymorphic() throws Exception {
GenericsServiceClient serviceClient =
domain.getService(GenericsServiceClient.class,
"GenericsServiceClientWSComponent");
performTestPolymorphic(serviceClient);
Modified:
incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/StandardTypesDatabindingTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/StandardTypesDatabindingTestCase.java?rev=666532&r1=666531&r2=666532&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/StandardTypesDatabindingTestCase.java
(original)
+++
incubator/tuscany/java/sca/itest/databindings/jaxb-bottom-up/src/test/java/org/apache/tuscany/sca/itest/databindings/jaxb/StandardTypesDatabindingTestCase.java
Tue Jun 10 22:24:15 2008
@@ -209,7 +209,7 @@
* Service method invoked is getNewURIArray.
*/
@Test
- @Ignore("junit.framework.AssertionFailedError: expected:<http://abcuri>
but was:<http://abcuri>")
+ // @Ignore("junit.framework.AssertionFailedError: expected:<http://abcuri>
but was:<http://abcuri>")
public void testSCANewURIArray() throws Exception {
StandardTypesServiceClient serviceClient =
domain.getService(StandardTypesServiceClient.class,
"StandardTypesServiceClientSCAComponent");
@@ -489,7 +489,7 @@
* Service method invoked is getNewURI.
*/
@Test
- @Ignore("junit.framework.AssertionFailedError: expected:<http://abcuri>
but was:<http://abcuri>")
+ // @Ignore("junit.framework.AssertionFailedError: expected:<http://abcuri>
but was:<http://abcuri>")
public void testWSNewURI() throws Exception {
StandardTypesServiceClient serviceClient =
domain.getService(StandardTypesServiceClient.class,
"StandardTypesServiceClientWSComponent");
@@ -501,7 +501,7 @@
* Service method invoked is getNewURIArray.
*/
@Test
- @Ignore("junit.framework.AssertionFailedError: expected:<http://abcuri>
but was:<http://abcuri>")
+ // @Ignore("junit.framework.AssertionFailedError: expected:<http://abcuri>
but was:<http://abcuri>")
public void testWSNewURIArray() throws Exception {
StandardTypesServiceClient serviceClient =
domain.getService(StandardTypesServiceClient.class,
"StandardTypesServiceClientWSComponent");
@@ -561,7 +561,7 @@
public void testWSNewObject() throws Exception {
StandardTypesServiceClient serviceClient =
domain.getService(StandardTypesServiceClient.class,
"StandardTypesServiceClientWSComponent");
- //performTestNewObject(serviceClient);
+ performTestNewObject(serviceClient);
}
/**
@@ -573,7 +573,7 @@
public void testWSNewObjectArray() throws Exception {
StandardTypesServiceClient serviceClient =
domain.getService(StandardTypesServiceClient.class,
"StandardTypesServiceClientWSComponent");
- //performTestNewObjectArray(serviceClient);
+ performTestNewObjectArray(serviceClient);
}
/**
@@ -1094,9 +1094,9 @@
private void performTestNewURI(StandardTypesServiceClient serviceClient) {
URI[] uris = new URI[4];
uris[0] = URI.create("a/b/c");
- uris[1] = URI.create("http://abc");
+ uris[1] = URI.create("http://abc/");
uris[2] = URI.create("ftp://a/b");
- uris[3] = URI.create("http://abc").resolve("xyz");
+ uris[3] = URI.create("http://abc/").resolve("xyz");
for (int i = 0; i < uris.length; ++i) {
URI expected = uris[i].resolve("uri");
@@ -1111,9 +1111,9 @@
// [rfeng] We need to have a trialign / to avoid the resolving problem
// FIXME: [vamsi] This is actually a data transformation problem. The
array being returned from the service method is
// not making to the caller intact.
- uris[1] = URI.create("http://abc");
+ uris[1] = URI.create("http://abc/");
uris[2] = URI.create("ftp://a/b");
- uris[3] = URI.create("http://abc").resolve("xyz");
+ uris[3] = URI.create("http://abc/").resolve("xyz");
URI[] expected = new URI[uris.length];
for (int i = 0; i < uris.length; ++i) {
Modified:
incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java?rev=666532&r1=666531&r2=666532&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java
Tue Jun 10 22:24:15 2008
@@ -22,9 +22,11 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
import org.apache.tuscany.sca.databinding.WrapperHandler;
@@ -46,7 +48,7 @@
*/
public class DataBindingJavaInterfaceProcessor implements JavaInterfaceVisitor
{
private static final String JAXB_DATABINDING =
"javax.xml.bind.JAXBElement";
- private DataBindingExtensionPoint dataBindingRegistry;
+ private DataBindingExtensionPoint dataBindingRegistry;
public DataBindingJavaInterfaceProcessor(DataBindingExtensionPoint
dataBindingRegistry) {
super();
@@ -143,6 +145,7 @@
String db = operation.getDataBinding();
if (db == null || JAXB_DATABINDING.equals(db)) {
assignOperationDataBinding(operation);
+ db = operation.getDataBinding();
}
// Introspect the wrapper data type
@@ -155,6 +158,12 @@
wrapper.setInputWrapperType(handler.getWrapperType(operation, true));
wrapper.setOutputWrapperType(handler.getWrapperType(operation, false));
}
+ if (dbObj != null && handler == null) {
+ // To avoid JAXB wrapper bean generation
+ WrapperInfo wrapper = operation.getWrapper();
+ wrapper.setInputWrapperType(null);
+ wrapper.setOutputWrapperType(null);
+ }
}
}
}
@@ -168,7 +177,7 @@
*/
private void assignOperationDataBinding(Operation operation) {
- String nonDefaultDataBindingName = null;
+ Set<String> dbs = new HashSet<String>();
// Can't use DataType<?> since operation.getInputType() returns:
DataType<List<DataType>>
List<DataType> opDataTypes = new LinkedList<DataType>();
@@ -182,28 +191,20 @@
for (DataType<?> d : opDataTypes) {
if (d != null) {
String dataBinding = d.getDataBinding();
- // Assumes JavaBeans DB is default
- if (dataBinding != null &&
!dataBinding.equals(JavaBeansDataBinding.NAME)
- && !dataBinding.equals(SimpleJavaDataBinding.NAME) &&
!dataBinding.startsWith("java:")) {
- if (nonDefaultDataBindingName != null) {
- if (!nonDefaultDataBindingName.equals(dataBinding)) {
- // We've seen two different non-default DBs, e.g.
SDO and JAXB
- // so unset the string and break out of the loop
- nonDefaultDataBindingName = null;
- break;
- } else {
- continue;
- }
- } else {
- nonDefaultDataBindingName = dataBinding;
- }
+ if ("java:array".equals(dataBinding)) {
+ dataBinding = ((DataType)d.getLogical()).getDataBinding();
+ }
+ if (dataBinding != null) {
+ dbs.add(dataBinding);
}
}
}
- // We have a DB worthy of promoting to operation level.
- if (nonDefaultDataBindingName != null) {
- operation.setDataBinding(nonDefaultDataBindingName);
+ dbs.remove(JavaBeansDataBinding.NAME);
+ dbs.remove(SimpleJavaDataBinding.NAME);
+
+ if (dbs.size() == 1) {
+ operation.setDataBinding(dbs.iterator().next());
}
}
}
Modified:
incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java?rev=666532&r1=666531&r2=666532&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java
(original)
+++
incubator/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextHelper.java
Tue Jun 10 22:24:15 2008
@@ -89,12 +89,12 @@
// TODO: [rfeng] Need to figure out what's the best grantularity to
create the JAXBContext
// per interface, operation or parameter
- /*
+
Operation op = source ? tContext.getSourceOperation() :
tContext.getTargetOperation();
if (op != null) {
return createJAXBContext(getDataTypes(op, true));
}
- */
+
DataType<?> dataType = source ? tContext.getSourceDataType() :
tContext.getTargetDataType();
return createJAXBContext(dataType);
Modified:
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java?rev=666532&r1=666531&r2=666532&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
(original)
+++
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
Tue Jun 10 22:24:15 2008
@@ -35,6 +35,7 @@
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
/**
* The default implementation of a data binding extension point.
@@ -219,6 +220,7 @@
// level?
Class physical = dataType.getPhysical();
if (physical == Object.class) {
+ dataType.setDataBinding(JavaBeansDataBinding.NAME);
return false;
}
if (dataType.getPhysical().isArray()) {
@@ -230,7 +232,8 @@
} else {
dataType.setDataBinding(JavaBeansDataBinding.NAME);
return false;
- } }
+ }
+ }
private boolean introspectArray(DataType dataType, Operation operation) {
Class physical = dataType.getPhysical();
@@ -260,6 +263,6 @@
return dataType;
}
}
- return new DataTypeImpl<Class>(JavaBeansDataBinding.NAME,
value.getClass(), value.getClass());
+ return new DataTypeImpl<XMLType>(JavaBeansDataBinding.NAME,
value.getClass(), XMLType.UNKNOWN);
}
}
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=666532&r1=666531&r2=666532&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 22:24:15 2008
@@ -39,19 +39,20 @@
private Class<?> physical;
private XMLType logical;
- private Method m;
+ private Object metaData;
+ private Method method;
private String wrapperClassName;
private String wrapperNamespace;
private String wrapperName;
private boolean request;
- private GeneratedClassLoader cl;
+ private GeneratedClassLoader classLoader;
private Class<? extends Throwable> exceptionClass;
public GeneratedDataTypeImpl(XMLAdapterExtensionPoint xmlAdapters, Class<?
extends Throwable> exceptionClass, GeneratedClassLoader cl) {
super();
this.exceptionClass = exceptionClass;
- this.cl = cl;
+ this.classLoader = cl;
QName name = FaultBeanGenerator.getElementName(exceptionClass);
this.logical = new XMLType(name, name);
this.xmlAdapters = xmlAdapters;
@@ -65,11 +66,11 @@
boolean request,
GeneratedClassLoader cl) {
super();
- this.m = m;
+ this.method = m;
this.wrapperClassName = wrapperClassName;
this.wrapperNamespace = wrapperNamespace;
this.wrapperName = wrapperName;
- this.cl = cl;
+ this.classLoader = cl;
this.request = request;
QName name = new QName(wrapperNamespace, wrapperName);
this.logical = new XMLType(name, name);
@@ -90,17 +91,17 @@
public synchronized Class<?> getPhysical() {
if (physical == null) {
- if (m != null) {
+ if (method != null) {
WrapperBeanGenerator generator = new WrapperBeanGenerator();
generator.setXmlAdapters(xmlAdapters);
physical =
- request ? generator.generateRequestWrapper(m,
wrapperClassName, wrapperNamespace, wrapperName, cl)
- : generator.generateResponseWrapper(m,
wrapperClassName, wrapperNamespace, wrapperName, cl);
+ request ? generator.generateRequestWrapper(method,
wrapperClassName, wrapperNamespace, wrapperName, classLoader)
+ : generator.generateResponseWrapper(method,
wrapperClassName, wrapperNamespace, wrapperName, classLoader);
;
} else if (exceptionClass != null) {
FaultBeanGenerator faultBeanGenerator = new
FaultBeanGenerator();
faultBeanGenerator.setXmlAdapters(xmlAdapters);
- physical = faultBeanGenerator.generate(exceptionClass, cl);
+ physical = faultBeanGenerator.generate(exceptionClass,
classLoader);
}
}
return physical;
@@ -125,5 +126,13 @@
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
+
+ public Object getMetaData() {
+ return metaData;
+ }
+
+ public void setMetaData(Object metaData) {
+ this.metaData = metaData;
+ }
}
Modified:
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/DataType.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/DataType.java?rev=666532&r1=666531&r2=666532&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/DataType.java
(original)
+++
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/DataType.java
Tue Jun 10 22:24:15 2008
@@ -103,4 +103,15 @@
*/
void setLogical(L logical);
+ /**
+ * Get the databinding-specific metadata
+ * @return the databinding-specific metadata
+ */
+ Object getMetaData();
+ /**
+ * Set the databinding-specific metadata
+ * @param metaData the databinding-specific metadata, such as SDO's
commonj.sdo.Type or
+ * JAXB's javax.xml.bind.JAXBContext
+ */
+ void setMetaData(Object metaData);
}
Modified:
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/DataTypeImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/DataTypeImpl.java?rev=666532&r1=666531&r2=666532&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/DataTypeImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/DataTypeImpl.java
Tue Jun 10 22:24:15 2008
@@ -44,6 +44,7 @@
private Class<?> physical;
private Type genericType;
private L logical;
+ private Object metaData;
/**
* Construct a data type specifying the physical and logical types.
@@ -202,4 +203,12 @@
return false;
return true;
}
+
+ public Object getMetaData() {
+ return metaData;
+ }
+
+ public void setMetaData(Object metaData) {
+ this.metaData = metaData;
+ }
}