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 2006/10/18 17:59:33 UTC
svn commit: r465280 - in
/incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src:
main/java/org/apache/tuscany/databinding/jaxb/JAXBContextHelper.java
test/java/org/apache/tuscany/databinding/jaxb/JAXBTestCase.java
Author: rfeng
Date: Wed Oct 18 08:59:31 2006
New Revision: 465280
URL: http://svn.apache.org/viewvc?view=rev&rev=465280
Log:
Detect contextPath from physical type
Modified:
incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBContextHelper.java
incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBTestCase.java
Modified: incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBContextHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBContextHelper.java?view=diff&rev=465280&r1=465279&r2=465280
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBContextHelper.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/main/java/org/apache/tuscany/databinding/jaxb/JAXBContextHelper.java Wed Oct 18 08:59:31 2006
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.databinding.jaxb;
+import java.lang.reflect.Type;
+
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@@ -34,23 +36,36 @@
private JAXBContextHelper() {
}
- public static JAXBContext createJAXBContext(TransformationContext tContext, boolean source) throws JAXBException {
+ public static JAXBContext createJAXBContext(TransformationContext tContext, boolean source)
+ throws JAXBException {
if (tContext == null)
throw new TransformationException("JAXB context is not set for the transformation.");
// FIXME: We should check the context path or classes
// FIXME: What should we do if JAXB is an intermediate node?
DataType<?> bindingContext = source ? tContext.getSourceDataType() : tContext.getTargetDataType();
- String contextPath = (String) bindingContext.getMetadata(JAXB_CONTEXT_PATH);
+ String contextPath = (String)bindingContext.getMetadata(JAXB_CONTEXT_PATH);
JAXBContext context = null;
- if (contextPath != null)
+ if (contextPath != null) {
context = JAXBContext.newInstance(contextPath);
- else {
- Class[] classes = (Class[]) bindingContext.getMetadata(JAXB_CLASSES);
- context = JAXBContext.newInstance(classes);
+ } else {
+ Class[] classes = (Class[])bindingContext.getMetadata(JAXB_CLASSES);
+ if (classes != null) {
+ context = JAXBContext.newInstance(classes);
+ } else {
+ Type type = bindingContext.getPhysical();
+ if (type instanceof Class) {
+ Class cls = (Class)type;
+ if (cls.getPackage() != null) {
+ contextPath = cls.getPackage().getName();
+ context = JAXBContext.newInstance(contextPath);
+ }
+ }
+ }
}
- if (context == null)
+ if (context == null) {
throw new TransformationException("JAXB context is not set for the transformation.");
+ }
return context;
}
Modified: incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBTestCase.java?view=diff&rev=465280&r1=465279&r2=465280
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBTestCase.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBTestCase.java Wed Oct 18 08:59:31 2006
@@ -31,6 +31,8 @@
import org.apache.tuscany.spi.model.DataType;
import org.w3c.dom.Node;
+import com.example.ipo.jaxb.PurchaseOrderType;
+
public class JAXBTestCase extends TestCase {
private static final String IPO_XML =
"<?xml version=\"1.0\"?>" + "<ipo:purchaseOrder"
@@ -98,6 +100,35 @@
}
+ public void testTransform2() throws Exception {
+ Reader2JAXB t0 = new Reader2JAXB();
+
+ DataType targetDataType = new DataType<Class>(PurchaseOrderType.class, null);
+ // targetDataType.setMetadata(JAXBContextHelper.JAXB_CONTEXT_PATH, contextPath);
+
+ TransformationContext tContext = createMock(TransformationContext.class);
+ expect(tContext.getTargetDataType()).andReturn(targetDataType).anyTimes();
+ replay(tContext);
+
+ Object object1 = t0.transform(new StringReader(IPO_XML), tContext);
+
+ DataType sourceDataType = new DataType<Class>(PurchaseOrderType.class, null);
+ // sourceDataType.setMetadata(JAXBContextHelper.JAXB_CONTEXT_PATH, contextPath);
+
+ TransformationContext tContext1 = createMock(TransformationContext.class);
+ expect(tContext1.getSourceDataType()).andReturn(sourceDataType).anyTimes();
+ replay(tContext1);
+
+ JAXB2Node t1 = new JAXB2Node();
+ Node node = t1.transform(object1, tContext1);
+
+ Assert.assertNotNull(node);
+
+ Node2JAXB t2 = new Node2JAXB();
+ Object object2 = t2.transform(node, tContext);
+ Assert.assertNotNull(object2);
+
+ }
protected void tearDown() throws Exception {
super.tearDown();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org