Author: dkulp
Date: Tue May 9 15:03:29 2006
New Revision: 405552
URL: http://svn.apache.org/viewcvs?rev=405552&view=rev
Log:
Initial server side code for Celtix binding (for standalone/non-tomcat mode).
Basic "helloworld" stuff works.
Added:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java
(with props)
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java
(with props)
Modified:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java
Modified:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java?rev=405552&r1=405551&r2=405552&view=diff
==============================================================================
---
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java
(original)
+++
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/builder/WebServiceEntryPointBuilder.java
Tue May 9 15:03:29 2006
@@ -20,6 +20,8 @@
import org.apache.tuscany.core.extension.EntryPointBuilderSupport;
import org.apache.tuscany.core.extension.EntryPointContextFactory;
import org.apache.tuscany.core.message.MessageFactory;
+import org.apache.tuscany.core.system.annotation.Autowire;
+import org.apache.tuscany.core.webapp.ServletHost;
import org.apache.tuscany.model.assembly.EntryPoint;
import org.osoa.sca.annotations.Scope;
@@ -30,9 +32,16 @@
*/
@Scope("MODULE")
public class WebServiceEntryPointBuilder extends
EntryPointBuilderSupport<WebServiceBinding> {
+ ServletHost tomcatHost;
+
+ @Autowire
+ public void setTomcatHost(ServletHost tomcatHost) {
+ this.tomcatHost = tomcatHost;
+ }
+
protected EntryPointContextFactory
createEntryPointContextFactory(EntryPoint entryPoint,
MessageFactory msgFactory) {
- return new WebServiceEntryPointContextFactory(entryPoint.getName(),
msgFactory);
+ return new WebServiceEntryPointContextFactory(tomcatHost, entryPoint,
msgFactory);
}
}
Modified:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java?rev=405552&r1=405551&r2=405552&view=diff
==============================================================================
---
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java
(original)
+++
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/config/WebServiceEntryPointContextFactory.java
Tue May 9 15:03:29 2006
@@ -16,8 +16,13 @@
*/
package org.apache.tuscany.binding.celtix.config;
+import org.apache.tuscany.binding.celtix.handler.CeltixEntryPointContextImpl;
+import org.apache.tuscany.core.builder.ContextCreationException;
+import org.apache.tuscany.core.context.EntryPointContext;
import org.apache.tuscany.core.extension.EntryPointContextFactory;
import org.apache.tuscany.core.message.MessageFactory;
+import org.apache.tuscany.core.webapp.ServletHost;
+import org.apache.tuscany.model.assembly.EntryPoint;
/**
* Creates instances of [EMAIL PROTECTED]
org.apache.tuscany.core.context.EntryPointContext} configured with the
@@ -26,9 +31,28 @@
* @version $Rev$ $Date$
*/
public class WebServiceEntryPointContextFactory extends
EntryPointContextFactory {
-
- public WebServiceEntryPointContextFactory(String name, MessageFactory
messageFactory) {
- super(name, messageFactory);
+ MessageFactory messageFactory;
+ EntryPoint entryPoint;
+ ServletHost servlet;
+
+ public WebServiceEntryPointContextFactory(ServletHost tomcatHost,
+ EntryPoint entryPoint,
+ MessageFactory mf) {
+ super(entryPoint.getName(), mf);
+ messageFactory = mf;
+ this.entryPoint = entryPoint;
+ servlet = tomcatHost;
+ }
+
+ public EntryPointContext createContext() throws ContextCreationException {
+ if (servlet == null) {
+ return new CeltixEntryPointContextImpl(entryPoint,
+ getSourceWireFactories().get(0),
+ messageFactory);
+ } else {
+ //REVISIT - running in tomcat
+ return null;
+ }
}
}
Added:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java?rev=405552&view=auto
==============================================================================
---
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java
(added)
+++
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java
Tue May 9 15:03:29 2006
@@ -0,0 +1,245 @@
+package org.apache.tuscany.binding.celtix.handler;
+
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executor;
+
+import javax.jws.soap.SOAPBinding.Style;
+import javax.wsdl.Binding;
+import javax.wsdl.BindingInput;
+import javax.wsdl.BindingOperation;
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.extensions.soap.SOAPBody;
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebServiceProvider;
+
+import commonj.sdo.helper.TypeHelper;
+
+import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding;
+import
org.apache.tuscany.binding.celtix.handler.io.SCAServerDataBindingCallback;
+import org.apache.tuscany.core.builder.BuilderConfigException;
+import org.apache.tuscany.core.context.ContextInitException;
+import org.apache.tuscany.core.context.CoreRuntimeException;
+import org.apache.tuscany.core.context.impl.EntryPointContextImpl;
+import org.apache.tuscany.core.message.MessageFactory;
+import org.apache.tuscany.core.wire.SourceWireFactory;
+import org.apache.tuscany.model.assembly.EntryPoint;
+import org.objectweb.celtix.Bus;
+import org.objectweb.celtix.bindings.DataBindingCallback;
+import org.objectweb.celtix.bindings.ServerBinding;
+import org.objectweb.celtix.bindings.ServerBindingEndpointCallback;
+import org.objectweb.celtix.bindings.ServerDataBindingCallback;
+import org.objectweb.celtix.bus.bindings.WSDLMetaDataCache;
+import org.objectweb.celtix.bus.bindings.WSDLOperationInfo;
+import org.objectweb.celtix.context.ObjectMessageContext;
+import org.objectweb.celtix.ws.addressing.AttributedURIType;
+import org.objectweb.celtix.ws.addressing.EndpointReferenceType;
+import org.objectweb.celtix.wsdl.EndpointReferenceUtils;
+import org.osoa.sca.annotations.Destroy;
+import org.xmlsoap.schemas.wsdl.http.AddressType;
+
+public class CeltixEntryPointContextImpl extends EntryPointContextImpl
+ implements ServerBindingEndpointCallback {
+
+ EntryPoint entry;
+ private Bus bus;
+ private Port port;
+ private TypeHelper typeHelper;
+ private WSDLMetaDataCache wsdlCache;
+ private ServerBinding serverBinding;
+ private Object entryPointProxy;
+
+ private Map<QName, ServerDataBindingCallback> opMap =
+ new ConcurrentHashMap<QName, ServerDataBindingCallback>();
+
+
+ public CeltixEntryPointContextImpl(EntryPoint entry,
+ SourceWireFactory sourceWireFactory,
+ MessageFactory messageFactory)
+ throws ContextInitException {
+
+ super(entry.getName(), sourceWireFactory, messageFactory);
+ this.entry = entry;
+ }
+
+ public void start() throws ContextInitException {
+ // TODO Auto-generated method stub
+ super.start();
+ System.out.println("In start");
+
+ entryPointProxy = getInstance(null);
+ WebServiceBinding wsBinding =
(WebServiceBinding)entry.getBindings().get(0);
+ bus = wsBinding.getBus();
+ typeHelper = wsBinding.getTypeHelper();
+ Definition wsdlDef = wsBinding.getWSDLDefinition();
+ port = wsBinding.getWSDLPort();
+ wsdlCache = new WSDLMetaDataCache(wsdlDef, wsBinding.getWSDLPort());
+
+ initOperationMap(wsdlDef);
+
+ String key = wsdlDef.getDocumentBaseURI();
+ URL url;
+ try {
+ url = new URL(key);
+ } catch (MalformedURLException e) {
+ throw new ContextInitException(e);
+ }
+
+ EndpointReferenceType reference =
EndpointReferenceUtils.getEndpointReference(url,
+ wsBinding.getWSDLService().getQName(),
+ wsBinding.getWSDLPort().getName());
+
+ AttributedURIType address = new AttributedURIType();
+
+ String bindingId = null;
+ Binding binding = wsBinding.getWSDLPort().getBinding();
+ if (null != binding) {
+ List list = binding.getExtensibilityElements();
+ if (!list.isEmpty()) {
+ bindingId =
((ExtensibilityElement)list.get(0)).getElementType().getNamespaceURI();
+ }
+ }
+ List<?> list = wsBinding.getWSDLPort().getExtensibilityElements();
+ for (Object ep : list) {
+ ExtensibilityElement ext = (ExtensibilityElement)ep;
+ if (ext instanceof SOAPAddress) {
+ if (bindingId == null) {
+ bindingId = ((SOAPAddress)ext).getLocationURI();
+ }
+ address.setValue(((SOAPAddress)ext).getLocationURI());
+ }
+ if (ext instanceof AddressType) {
+ if (bindingId == null) {
+ bindingId = ((AddressType)ext).getLocation();
+ }
+ address.setValue(((AddressType)ext).getLocation());
+ }
+ }
+ if (reference.getAddress() == null) {
+ //REVIST - bug in Celtix that the HTTP transport won't find the
address correctly
+ reference.setAddress(address);
+ }
+
+ try {
+ serverBinding =
bus.getBindingManager().getBindingFactory(bindingId).createServerBinding(
+ reference, this);
+ serverBinding.activate();
+ } catch (Exception e) {
+ throw new ContextInitException(e);
+ }
+ }
+
+ @Destroy
+ public void stop() throws CoreRuntimeException {
+ System.out.println("In stop");
+ super.stop();
+ }
+
+ private void initOperationMap(Definition def) {
+ List ops = port.getBinding().getBindingOperations();
+ Iterator opIt = ops.iterator();
+ while (opIt.hasNext()) {
+ BindingOperation op = (BindingOperation)opIt.next();
+ BindingInput bindingInput = op.getBindingInput();
+ List elements = bindingInput.getExtensibilityElements();
+ QName qn = new QName(def.getTargetNamespace(), op.getName());
+ for (Iterator i = elements.iterator(); i.hasNext();) {
+ Object element = i.next();
+ if (SOAPBody.class.isInstance(element)) {
+ SOAPBody body = (SOAPBody)element;
+ if (body.getNamespaceURI() != null) {
+ qn = new QName(body.getNamespaceURI(), op.getName());
+ }
+ }
+ }
+
+ ServerDataBindingCallback cb = getDataBindingCallback(qn, null,
+
DataBindingCallback.Mode.PARTS);
+ opMap.put(qn, cb);
+ if (!"".equals(cb.getRequestWrapperQName().getLocalPart())) {
+ opMap.put(cb.getRequestWrapperQName(), cb);
+ }
+ }
+ }
+ public ServerDataBindingCallback getDataBindingCallback(QName
operationName,
+
ObjectMessageContext objContext,
+
DataBindingCallback.Mode mode) {
+ if (opMap.containsKey(operationName)) {
+ return opMap.get(operationName);
+ }
+ WSDLOperationInfo opInfo =
wsdlCache.getOperationInfo(operationName.getLocalPart());
+ boolean inout = false;
+
+
+ Class<?> serviceInterface = getServiceInterface();
+ System.out.println(serviceInterface.getName());
+ Method meth = getMethod(serviceInterface,
operationName.getLocalPart());
+ System.out.println(meth);
+
+ ServerDataBindingCallback scb = new
SCAServerDataBindingCallback(opInfo,
+
typeHelper,
+ inout,
+ meth,
+
entryPointProxy);
+ // TODO Auto-generated method stub
+ return scb;
+ }
+ protected Method getMethod(Class<?> serviceInterface, String
operationName) {
+ // Note: this doesn't support overloaded operations
+ Method[] methods = serviceInterface.getMethods();
+ for (Method m : methods) {
+ if (m.getName().equals(operationName)) {
+ return m;
+ }
+ // tolerate WSDL with capatalized operation name
+ StringBuilder sb = new StringBuilder(operationName);
+ sb.setCharAt(0, Character.toLowerCase(sb.charAt(0)));
+ if (m.getName().equals(sb.toString())) {
+ return m;
+ }
+ }
+ throw new BuilderConfigException("no operation named " + operationName
+ + " found on service interface: " +
serviceInterface.getName());
+ }
+
+
+ public DataBindingCallback
getFaultDataBindingCallback(ObjectMessageContext objContext) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Map<QName, ? extends DataBindingCallback> getOperations() {
+ return opMap;
+ }
+
+ public Style getStyle() {
+ // TODO Auto-generated method stub
+ return wsdlCache.getStyle();
+ }
+ public DataBindingCallback.Mode getServiceMode() {
+ return DataBindingCallback.Mode.PARTS;
+ }
+
+ public WebServiceProvider getWebServiceProvider() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Executor getExecutor() {
+ //Let the transport handle it (or it goes to the Bus default wq
+ //if the transport cannot handle it
+ return null;
+ }
+
+
+
+}
+
Propchange:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/CeltixEntryPointContextImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java?rev=405552&r1=405551&r2=405552&view=diff
==============================================================================
---
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
(original)
+++
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
Tue May 9 15:03:29 2006
@@ -68,7 +68,11 @@
if (callback.hasInOut()) {
//REVISIT - inOuts
} else {
- objCtx.setReturn(os[0]);
+ if (isOutBound) {
+ objCtx.setReturn(os[0]);
+ } else {
+ objCtx.setMessageObjects(os);
+ }
}
} catch (IOException e) {
throw new WebServiceException(e);
Modified:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java?rev=405552&r1=405551&r2=405552&view=diff
==============================================================================
---
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
(original)
+++
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
Tue May 9 15:03:29 2006
@@ -51,6 +51,7 @@
}
DataObject obj = toWrappedDataObject(callback.getTypeHelper(),
+ isOutbound ? objCtx.getReturn() : null,
objCtx.getMessageObjects(),
wrapperName);
@@ -82,6 +83,7 @@
public static DataObject toWrappedDataObject(TypeHelper typeHelper,
+ Object ret,
Object[] os,
QName typeQN) {
XSDHelper xsdHelper = new XSDHelperImpl(typeHelper);
@@ -89,12 +91,17 @@
typeQN.getLocalPart(), true);
DataObject dataObject = new
DataFactoryImpl(typeHelper).create(property.getType());
List ips = dataObject.getInstanceProperties();
- for (int i = 0; i < ips.size(); i++) {
- if (os[i] instanceof Holder) {
- Holder<?> holder = (Holder<?>)os[i];
+ int offset = 0;
+ if (ret != null) {
+ dataObject.set(0, ret);
+ offset = 1;
+ }
+ for (int i = offset; i < ips.size(); i++) {
+ if (os[i - offset] instanceof Holder) {
+ Holder<?> holder = (Holder<?>)os[i - offset];
dataObject.set(i, holder.value);
} else {
- dataObject.set(i, os[i]);
+ dataObject.set(i, os[i - offset]);
}
}
return dataObject;
Modified:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java?rev=405552&r1=405551&r2=405552&view=diff
==============================================================================
---
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
(original)
+++
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
Tue May 9 15:03:29 2006
@@ -1,5 +1,6 @@
package org.apache.tuscany.binding.celtix.handler.io;
+
import org.w3c.dom.Node;
import commonj.sdo.helper.TypeHelper;
import org.objectweb.celtix.bindings.DataReader;
@@ -9,8 +10,9 @@
import org.objectweb.celtix.context.ObjectMessageContext;
public class SCADataBindingCallback extends
AbstractWSDLOperationDataBindingCallback {
- TypeHelper typeHelper;
- boolean hasInOut;
+
+ protected TypeHelper typeHelper;
+ protected boolean hasInOut;
public SCADataBindingCallback(WSDLOperationInfo op, TypeHelper helper,
boolean inout) {
super(op);
@@ -52,7 +54,8 @@
}
public void initObjectContext(ObjectMessageContext octx) {
- //REVISIT - this is only used server side, must be implemented for
server side to work
+ //REVISIT - is this even used?
}
+
}
Added:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java?rev=405552&view=auto
==============================================================================
---
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java
(added)
+++
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java
Tue May 9 15:03:29 2006
@@ -0,0 +1,43 @@
+package org.apache.tuscany.binding.celtix.handler.io;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import commonj.sdo.helper.TypeHelper;
+
+import org.objectweb.celtix.bindings.ServerDataBindingCallback;
+import org.objectweb.celtix.bus.bindings.WSDLOperationInfo;
+import org.objectweb.celtix.context.ObjectMessageContext;
+
+public class SCAServerDataBindingCallback extends SCADataBindingCallback
+ implements ServerDataBindingCallback {
+ Method method;
+ Object targetObject;
+
+ public SCAServerDataBindingCallback(WSDLOperationInfo op, TypeHelper
helper,
+ boolean inout, Method meth, Object
target) {
+ super(op, helper, inout);
+ method = meth;
+ targetObject = target;
+ }
+
+
+ public void invoke(ObjectMessageContext octx) throws
InvocationTargetException {
+ Object ret;
+ try {
+ ret = method.invoke(targetObject, octx.getMessageObjects());
+ } catch (RuntimeException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new InvocationTargetException(e);
+ }
+ octx.setReturn(ret);
+ }
+
+ public void initObjectContext(ObjectMessageContext octx) {
+ Object o[] = new Object[method.getParameterTypes().length];
+ //REVIST - holders?
+ octx.setMessageObjects(o);
+ }
+
+}
Propchange:
incubator/tuscany/java/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java?rev=405552&r1=405551&r2=405552&view=diff
==============================================================================
---
incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java
(original)
+++
incubator/tuscany/java/sca/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriterTestCase.java
Tue May 9 15:03:29 2006
@@ -75,7 +75,7 @@
assertEquals("Value not written", "Hello",
element.getFirstChild().getTextContent().trim());
DataReader<Node> reader = callback.createReader(Node.class);
- reader.readWrapper(objCtx , false, element);
+ reader.readWrapper(objCtx , true, element);
assertEquals("Hello", objCtx.getReturn());
}