summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/databinding-xmlbeans
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-07-08 23:10:31 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-07-08 23:10:31 +0000
commit2410d8844182e057fd59ea4139b9a7d61413bbea (patch)
treebf16f0379149936193778e805a2d88c3cad69959 /java/sca/modules/databinding-xmlbeans
parent755737f1cef0f827f6c87c3d55560adebdb776f0 (diff)
Make the ServiceDiscovery pluggable and add support for OSGi-based service discoverer
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@675040 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/databinding-xmlbeans')
-rw-r--r--java/sca/modules/databinding-xmlbeans/src/main/java/org/apache/tuscany/sca/databinding/xmlbeans/XMLBeansDataBinding.java43
1 files changed, 40 insertions, 3 deletions
diff --git a/java/sca/modules/databinding-xmlbeans/src/main/java/org/apache/tuscany/sca/databinding/xmlbeans/XMLBeansDataBinding.java b/java/sca/modules/databinding-xmlbeans/src/main/java/org/apache/tuscany/sca/databinding/xmlbeans/XMLBeansDataBinding.java
index 94e74321c4..15616979c2 100644
--- a/java/sca/modules/databinding-xmlbeans/src/main/java/org/apache/tuscany/sca/databinding/xmlbeans/XMLBeansDataBinding.java
+++ b/java/sca/modules/databinding-xmlbeans/src/main/java/org/apache/tuscany/sca/databinding/xmlbeans/XMLBeansDataBinding.java
@@ -19,10 +19,18 @@
package org.apache.tuscany.sca.databinding.xmlbeans;
+import java.lang.reflect.Field;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.databinding.WrapperHandler;
import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
+import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.XmlObject;
+import org.osoa.sca.ServiceRuntimeException;
/**
* XMLBeans DataBinding
@@ -31,15 +39,44 @@ import org.apache.xmlbeans.XmlObject;
*/
public class XMLBeansDataBinding extends BaseDataBinding {
public static final String NAME = XmlObject.class.getName();
- public static final String[] ALIASES = { "xmlbeans" };
-
+ public static final String[] ALIASES = {"xmlbeans"};
+
public XMLBeansDataBinding() {
super(NAME, XmlObject.class);
}
@Override
+ public WrapperHandler getWrapperHandler() {
+ return new XMLBeansWrapperHandler();
+ }
+
+ @Override
+ public boolean introspect(DataType type, Operation operation) {
+ if (XmlObject.class.isAssignableFrom(type.getPhysical())) {
+ Class<?> cls = type.getPhysical();
+ SchemaType schemaType = null;
+ try {
+ Field f = cls.getField("type");
+ schemaType = (SchemaType)f.get(null);
+ } catch (Throwable e) {
+ throw new ServiceRuntimeException(e);
+ }
+ QName typeName = schemaType.getName();
+ Object logical = type.getLogical();
+ QName elementName = null;
+ if (logical instanceof XMLType) {
+ elementName = ((XMLType)logical).getElementName();
+ }
+ type.setLogical(new XMLType(elementName, typeName));
+ type.setMetaData(SchemaType.class, schemaType);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
public Object copy(Object object, DataType dataType, Operation operation) {
- return ((XmlObject) object).copy();
+ return ((XmlObject)object).copy();
}
}