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 2007/02/14 01:10:54 UTC
svn commit: r507322 - in
/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src:
main/java/org/apache/tuscany/databinding/sdo/
test/java/org/apache/tuscany/databinding/sdo/
Author: rfeng
Date: Tue Feb 13 16:10:53 2007
New Revision: 507322
URL: http://svn.apache.org/viewvc?view=rev&rev=507322
Log:
[sca-integration-branch] Merged some changes from trunk
Modified:
incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java
incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java
incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java
incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java
incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java
Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java?view=diff&rev=507322&r1=507321&r2=507322
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java Tue Feb 13 16:10:53 2007
@@ -35,6 +35,7 @@
import commonj.sdo.DataObject;
import commonj.sdo.Property;
+import commonj.sdo.helper.HelperContext;
import commonj.sdo.helper.TypeHelper;
import commonj.sdo.helper.XSDHelper;
import org.osoa.sca.annotations.Init;
@@ -60,10 +61,13 @@
this.propertyQName = propertyQName;
}
- public ModelObject load(CompositeComponent parent, ModelObject object, XMLStreamReader reader, DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
+ public ModelObject load(CompositeComponent parent,
+ ModelObject object,
+ XMLStreamReader reader,
+ DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
assert propertyQName.equals(reader.getName());
- // TODO: We need a way to get TypeHelper from deploymentContext
- TypeHelper typeHelper = TypeHelper.INSTANCE;
+ HelperContext helperContext = SDODataTypeHelper.getHelperContext(deploymentContext);
+ TypeHelper typeHelper = helperContext.getTypeHelper();
XMLStreamHelper streamHelper = SDOUtil.createXMLStreamHelper(typeHelper);
DataObject dataObject = streamHelper.loadObject(reader);
// TODO: Is it required that the object always extends from ModelObject?
Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java?view=diff&rev=507322&r1=507321&r2=507322
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java Tue Feb 13 16:10:53 2007
@@ -20,6 +20,8 @@
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.net.URI;
import java.net.URL;
@@ -27,7 +29,6 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
-import org.apache.tuscany.sdo.util.SDOUtil;
import org.apache.tuscany.spi.annotation.Autowire;
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.deployer.DeploymentContext;
@@ -40,6 +41,7 @@
import commonj.sdo.helper.HelperContext;
import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.impl.HelperProvider;
/**
* Loader that handles <import.sdo> elements.
@@ -50,9 +52,8 @@
public static final QName IMPORT_SDO =
new QName("http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0", "import.sdo");
- @Constructor( {"registry"})
- public ImportSDOLoader(@Autowire
- LoaderRegistry registry) {
+ @Constructor({"registry"})
+ public ImportSDOLoader(@Autowire LoaderRegistry registry) {
super(registry);
}
@@ -68,26 +69,16 @@
// FIXME: [rfeng] How to associate the TypeHelper with deployment
// context?
- HelperContext helperContext = null;
- if (deploymentContext != null && deploymentContext.getParent() != null) {
- helperContext = (HelperContext)deploymentContext.getParent().getExtension(HelperContext.class.getName());
- if (helperContext == null) {
- helperContext = SDOUtil.createHelperContext();
- deploymentContext.getParent().putExtension(HelperContext.class.getName(), helperContext);
- }
- }
-
- if (helperContext == null) {
- helperContext = SDOUtil.createHelperContext();
- }
+ HelperContext helperContext = SDODataTypeHelper.getHelperContext(deploymentContext);
- importFactory(reader, deploymentContext);
+ importFactory(reader, deploymentContext, helperContext);
importWSDL(reader, deploymentContext, helperContext);
LoaderUtil.skipToEndElement(reader);
return new SDOType(helperContext);
}
- private void importFactory(XMLStreamReader reader, DeploymentContext deploymentContext) throws LoaderException {
+ private void importFactory(XMLStreamReader reader, DeploymentContext deploymentContext, HelperContext helperContext)
+ throws LoaderException {
String factoryName = reader.getAttributeValue(null, "factory");
if (factoryName != null) {
ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
@@ -96,22 +87,34 @@
ClassLoader cl = deploymentContext.getClassLoader();
Thread.currentThread().setContextClassLoader(cl);
Class<?> factoryClass = cl.loadClass(factoryName);
- // FIXME: We require the SDO to provide an API to register
- // static types in a given TypeHelper
- SDOUtil.registerStaticTypes(factoryClass);
- } catch (ClassNotFoundException e) {
+ register(factoryClass, helperContext);
+ } catch (Exception e) {
throw new LoaderException(e.getMessage(), e);
} finally {
Thread.currentThread().setContextClassLoader(oldCL);
}
}
}
+
+ private static void register(Class factoryClass, HelperContext helperContext) throws Exception {
+ Field field = factoryClass.getField("INSTANCE");
+ Object factory = field.get(null);
+ Method method = factory.getClass().getMethod("register", new Class[] {HelperContext.class});
+
+ method.invoke(factory, new Object[] {helperContext});
+
+ // FIXME: How do we associate the application HelperContext with the one
+ // imported by the composite
+ HelperContext defaultContext = HelperProvider.getDefaultContext();
+ method.invoke(factory, new Object[] {defaultContext});
+ }
private void importWSDL(XMLStreamReader reader, DeploymentContext deploymentContext, HelperContext helperContext)
throws LoaderException {
String location = reader.getAttributeValue(null, "location");
- if (location == null)
+ if (location == null) {
location = reader.getAttributeValue(null, "wsdlLocation");
+ }
if (location != null) {
try {
URL wsdlURL = null;
@@ -143,9 +146,9 @@
public static class SDOType extends ModelObject {
private HelperContext helperContext;
- public SDOType(HelperContext typeHelper) {
+ public SDOType(HelperContext helperContext) {
super();
- this.helperContext = typeHelper;
+ this.helperContext = helperContext;
}
public HelperContext getHelperContext() {
Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java?view=diff&rev=507322&r1=507321&r2=507322
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java Tue Feb 13 16:10:53 2007
@@ -21,6 +21,7 @@
import javax.xml.namespace.QName;
+import org.apache.tuscany.spi.databinding.SimpleTypeMapper;
import org.apache.tuscany.spi.databinding.WrapperHandler;
import org.apache.tuscany.spi.databinding.extension.DataBindingExtension;
import org.apache.tuscany.spi.model.DataType;
@@ -31,18 +32,35 @@
import commonj.sdo.helper.XSDHelper;
/**
+ * SDO Databinding
*
+ * @version $Reve$ $Date$
*/
public class SDODataBinding extends DataBindingExtension {
private WrapperHandler<Object> wrapperHandler;
-
+
+ public SDODataBinding() {
+ super(DataObject.class);
+ wrapperHandler = new SDOWrapperHandler();
+ }
+
@Override
public DataType introspect(Class<?> javaType) {
- if (javaType == DataObject.class) {
- return new DataType<QName>(getName(), javaType, null);
+ if (javaType == null) {
+ return null;
}
+ // FIXME: Need a better to test dynamic SDO
+ if (DataObject.class.isAssignableFrom(javaType)) {
+ // Dynamic SDO
+ return new DataType<QName>(getName(), javaType, null);
+ }
+ // FIXME: We need to access HelperContext
Type type = TypeHelper.INSTANCE.getType(javaType);
- if (type == null || type.isDataType()) {
+ if (type == null) {
+ return null;
+ }
+ if (type.isDataType()) {
+ // FIXME: Ignore simple types?
return null;
}
String namespace = type.getURI();
@@ -52,14 +70,13 @@
return dataType;
}
- public SDODataBinding() {
- super(DataObject.class);
- wrapperHandler = new SDOWrapperHandler();
- }
-
@Override
public WrapperHandler getWrapperHandler() {
return wrapperHandler;
+ }
+
+ public SimpleTypeMapper getSimpleTypeMapper() {
+ return new SDOSimpleTypeMapper();
}
}
Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java?view=diff&rev=507322&r1=507321&r2=507322
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java Tue Feb 13 16:10:53 2007
@@ -23,13 +23,14 @@
import org.apache.tuscany.sdo.util.SDOUtil;
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.databinding.TransformationContext;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
import commonj.sdo.helper.HelperContext;
/**
- * Helper class to get TypeHelper from the transformation context
+ * Helper class to get TypeHelper from the context
*/
-public class SDODataTypeHelper {
+public final class SDODataTypeHelper {
private SDODataTypeHelper() {
}
@@ -50,5 +51,22 @@
} else {
return helperContext;
}
+ }
+
+ public static HelperContext getHelperContext(DeploymentContext deploymentContext) {
+ HelperContext helperContext = null;
+ if (deploymentContext != null && deploymentContext.getParent() != null) {
+ helperContext = (HelperContext)deploymentContext.getParent().getExtension(HelperContext.class.getName());
+ if (helperContext == null) {
+ helperContext = SDOUtil.createHelperContext();
+ deploymentContext.getParent().putExtension(HelperContext.class.getName(), helperContext);
+ }
+ }
+
+ if (helperContext == null) {
+ helperContext = SDOUtil.createHelperContext();
+ }
+
+ return helperContext;
}
}
Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java?view=diff&rev=507322&r1=507321&r2=507322
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java Tue Feb 13 16:10:53 2007
@@ -28,10 +28,11 @@
import org.apache.tuscany.core.deployer.RootDeploymentContext;
import org.apache.tuscany.databinding.sdo.ImportSDOLoader.SDOType;
-import org.apache.tuscany.sdo.model.ModelFactory;
import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.loader.LoaderException;
+import com.example.ipo.sdo.SdoFactory;
+
/**
* @version $Rev$ $Date$
*/
@@ -77,7 +78,7 @@
}
public static class MockFactory {
- public static final Object INSTANCE = ModelFactory.INSTANCE;
+ public static final Object INSTANCE = SdoFactory.INSTANCE;
static {
ImportSDOLoaderTestCase.inited = true;
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org