package gov.nih.nci.cagrid.common; import java.io.InputStream; import org.apache.axis.AxisEngine; import org.apache.axis.EngineConfiguration; import org.apache.axis.MessageContext; import org.apache.axis.client.AxisClient; import org.apache.axis.configuration.FileProvider; import org.globus.wsrf.encoding.ObjectDeserializer; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** * ConfigurableObjectDeserializer Object Deserializer that allows for * configuration by a wsdd file * * @author <A HREF="MAILTO:ervin@bmi.osu.edu">David W. Ervin</A> * @created Jun 23, 2006 * @version $Id$ */ public class ConfigurableObjectDeserializer extends ObjectDeserializer { public static <T> T toObject(InputSource source, Class<T> javaClass, InputStream wsdd) throws SAXException { // create a message context for the wsdd EngineConfiguration engineConfig = new FileProvider(wsdd); AxisClient axisClient = new AxisClient(engineConfig); MessageContext messageContext = new MessageContext(axisClient); messageContext.setEncodingStyle(""); messageContext.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE); ConfigurableObjectDeserializationContext desContext = new ConfigurableObjectDeserializationContext( messageContext, source, javaClass); return javaClass.cast(desContext.getValue()); } }