summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache
diff options
context:
space:
mode:
authornash <nash@13f79535-47bb-0310-9956-ffa450edef68>2010-12-03 17:07:02 +0000
committernash <nash@13f79535-47bb-0310-9956-ffa450edef68>2010-12-03 17:07:02 +0000
commitb45ddbd9b965d35bca5c6974c7ab2cceda794fb2 (patch)
tree7b5f3ef285a9386b85b4db9bcd2593577c813dfa /sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache
parenteeabc3ec374ba9dc8b3d9f21f5f07e63b4d268f0 (diff)
TUSCANY-3298: Enable JAXB wrappers for WSDL generation
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1041912 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java30
-rw-r--r--sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java8
2 files changed, 31 insertions, 7 deletions
diff --git a/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java b/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
index 39e9ffc161..8e00a20c5f 100644
--- a/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
+++ b/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDODataBinding.java
@@ -19,8 +19,10 @@
package org.apache.tuscany.sca.databinding.sdo;
+import java.lang.reflect.ParameterizedType;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.Collection;
import javax.xml.namespace.QName;
@@ -60,7 +62,7 @@ public class SDODataBinding extends BaseDataBinding {
@Override
public boolean introspect(DataType dataType, final Operation operation) {
- final Class javaType = dataType.getPhysical();
+ Class javaType = dataType.getPhysical();
// Allow privileged access to read system properties. Requires PropertyPermission
// java.specification.version read in security policy.
final HelperContext context = AccessController.doPrivileged(new PrivilegedAction<HelperContext>() {
@@ -72,11 +74,33 @@ public class SDODataBinding extends BaseDataBinding {
final Type type = context.getTypeHelper().getType(javaType);
if (type == null) {
// FIXME: Need a better to test dynamic SDO
+ // TUSCANY-3298: get underlying element type for collections
+ boolean isMany = false;
+ if (Collection.class.isAssignableFrom(javaType)) {
+ java.lang.reflect.Type genericType = dataType.getGenericType();
+ if (genericType instanceof ParameterizedType) {
+ java.lang.reflect.Type actualType = ((ParameterizedType)genericType).getActualTypeArguments()[0];
+ if (actualType instanceof Class) {
+ javaType = (Class)actualType;
+ isMany = true;
+ }
+ }
+ }
if (DataObject.class.isAssignableFrom(javaType)) {
// Dynamic SDO
dataType.setDataBinding(getName());
- if (dataType.getLogical() == null) {
- dataType.setLogical(XMLType.UNKNOWN);
+ // TUSCANY-3298: use XMLType many value to indicate a collection
+ Object logical = dataType.getLogical();
+ if (logical == null) {
+ if (!isMany) {
+ dataType.setLogical(XMLType.UNKNOWN);
+ } else {
+ XMLType xmlType = new XMLType(null, null);
+ xmlType.setMany(true);
+ dataType.setLogical(xmlType);
+ }
+ } else if (logical instanceof XMLType && isMany) {
+ ((XMLType)logical).setMany(true);
}
return true;
}
diff --git a/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java b/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
index e3ec6dc6b7..6f5443fe0c 100644
--- a/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
+++ b/sca-java-1.x/trunk/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOTypeHelper.java
@@ -70,16 +70,16 @@ public class SDOTypeHelper implements XMLTypeHelper {
QName xmlType = JavaXMLMapper.getXMLType(javaType);
if (xmlType != null) {
return new TypeInfo(xmlType, true, null);
- } else if (javaType == commonj.sdo.DataObject.class) {
- return new TypeInfo(SimpleTypeMapperImpl.XSD_ANYTYPE, true, null);
} else {
// introspect(javaType, xsdTypesMap, typesMap);
if (logical instanceof XMLType) {
xmlType = ((XMLType)logical).getTypeName();
}
if (xmlType == null) {
- xmlType =
- new QName(JavaXMLMapper.getNamespace(javaType), Introspector.decapitalize(javaType.getSimpleName()));
+ // TUSCANY-3298: dynamic SDO or collection of dynamic SDO
+ return new TypeInfo(SimpleTypeMapperImpl.XSD_ANYTYPE, true, null);
+ //xmlType =
+ // new QName(JavaXMLMapper.getNamespace(javaType), Introspector.decapitalize(javaType.getSimpleName()));
}
return new TypeInfo(xmlType, false, null);
}