sandholm    2003/02/25 21:21:26

  Modified:    java/test/wsdl/extensibility Tag:
                        dynamic_deserialization_branch
                        ExtensibilityQueryBindingImpl.java
                        ExtensibilityQueryTestCase.java QueryTypes.wsdl
                        server-deploy.wsdd
  Log:
  added test for dynamic deserialization based on class meta data (in separate branch)
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.16.2.1  +22 -48    
xml-axis/java/test/wsdl/extensibility/ExtensibilityQueryBindingImpl.java
  
  Index: ExtensibilityQueryBindingImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/test/wsdl/extensibility/ExtensibilityQueryBindingImpl.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- ExtensibilityQueryBindingImpl.java        11 Dec 2002 22:40:20 -0000      1.16
  +++ ExtensibilityQueryBindingImpl.java        26 Feb 2003 05:21:26 -0000      
1.16.2.1
  @@ -29,81 +29,55 @@
   import java.io.Reader;
   import java.io.StringReader;
   import java.io.StringWriter;
  +import java.io.PrintWriter;
   import java.rmi.RemoteException;
   import java.util.Calendar;
   import java.util.Vector;
  -
  +import org.apache.axis.components.logger.LogFactory;
  +import org.apache.commons.logging.Log;
   
   public class ExtensibilityQueryBindingImpl implements ExtensibilityQueryPortType {
       private final static String[] books = new String[] { "The Grid", "The Oxford 
Dictionary" }; 
       private final static String[] subjects = new String[] { "Computer Science", 
"English" }; 
  +    protected static Log log =
  +            LogFactory.getLog(ExtensibilityQueryBindingImpl.class.getName());
   
       public ExtensibilityType query(ExtensibilityType query) throws RemoteException {
           ExtensibilityType result = new ExtensibilityType();
  -        Object obj = query.get_any()[0].getObjectValue();
  -        if (obj instanceof FindBooksQueryExpressionElement) {
  -            BookType bookQuery = 
((FindBooksQueryExpressionElement)obj).getBookQuery();
  +        Object obj = null;
  +        try {
  +            obj = query.get_any()[0].getObjectValue(BookType.class);
  +        } catch (Exception e) {
  +            StringWriter writer = new StringWriter();
  +            PrintWriter out = new PrintWriter(writer);
  +            log.error("Error converting query: " + writer.toString());
  +            throw new RemoteException(e.toString());
  +        }
  +        log.error("Incoming MessageContext " + obj + " : " + 
query.get_any()[0].toString());
  +        if (obj instanceof BookType) {
  +            BookType bookQuery = (BookType)obj;
               String subject = bookQuery.getSubject();
               if (!"all".equals(subject)) {
                   throw new RemoteException("ExtensibilityQueryBindingImpl: Book 
subject query should be all, instead was " + subject);
               }
  -            QueryResultElement resultElement = new QueryResultElement();
               ResultListType resultList = new ResultListType();
  -            resultElement.setResultList(resultList);
               QueryResultType[] queryResult = new QueryResultType[books.length];
               for (int i = 0; i < books.length; i++) {
                   queryResult[i] = new QueryResultType();
                   queryResult[i].setName(subjects[i]);
  +                queryResult[i].setStatus(StatusType.MORE);
                   queryResult[i].setValue(books[i]);
                   queryResult[i].setTime(Calendar.getInstance());
                   queryResult[i].setQueryType(new QName("urn:QueryType","BookQuery"));
               }
               resultList.setResult(queryResult);
  -            MessageElement me = new MessageElement("foo", "bar", resultElement);
  +            QName elementName = 
QueryResultElement.getTypeDesc().getFields()[0].getXmlName();
  +            MessageElement me = new MessageElement(elementName.getNamespaceURI(), 
elementName.getLocalPart(), resultList);
  +            log.debug("Outgoing message: " + me.toString());
               result.set_any(new MessageElement [] { me });
           } else {
  -            throw new RemoteException("Failed to get 
FindBooksQueryExpressionElement. Got: " + obj.getClass().getName() + ":" + 
obj.toString());
  +            throw new RemoteException("Failed to get 
FindBooksQueryExpressionElement. Got: " + obj);
           }
           return result;
  -    }
  -}
  -
  -class ObjectSerializer {
  -    static Log logger =
  -           LogFactory.getLog(ObjectSerializer.class.getName());
  -
  -    static Object toObject(Element element) throws Exception {
  -       MessageContext currentContext = MessageContext.getCurrentContext();
  -       MessageContext messageContext = new 
MessageContext(currentContext.getAxisEngine()); 
  -       
messageContext.setTypeMappingRegistry(currentContext.getTypeMappingRegistry());
  -       messageContext.setEncodingStyle("");
  -       messageContext.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
  -       SOAPEnvelope message = new SOAPEnvelope();
  -       Document doc = XMLUtils.newDocument();
  -       Element operationWrapper = 
doc.createElementNS("urn:operationNS","operation"); 
  -       doc.appendChild(operationWrapper); 
  -       Node node = doc.importNode(element,true);
  -       operationWrapper.appendChild(node);
  -
  -       message.addBodyElement(new SOAPBodyElement(operationWrapper));
  -       
  -       StringWriter stringWriter = new StringWriter(); 
  -       SerializationContext context = new SerializationContextImpl(stringWriter, 
messageContext);
  -       context.setDoMultiRefs(false);
  -       message.output(context);
  -       stringWriter.close();
  -       String messageString = stringWriter.getBuffer().toString();
  -       logger.debug(messageString);
  -       Reader reader = new StringReader(messageString);
  -       DeserializationContext deserializer = new DeserializationContextImpl(new 
InputSource(reader),
  -                                                                           
messageContext, 
  -                                                                           
Message.REQUEST);
  -       deserializer.parse();
  -       SOAPEnvelope env = deserializer.getEnvelope();
  -       
  -       RPCElement rpcElem = (RPCElement)env.getFirstBody();
  -       Vector parameters = rpcElem.getParams();
  -       RPCParam param = (RPCParam) parameters.get(0);
  -       return param.getValue();
       }
   }
  
  
  
  1.14.2.1  +12 -31    
xml-axis/java/test/wsdl/extensibility/ExtensibilityQueryTestCase.java
  
  Index: ExtensibilityQueryTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/test/wsdl/extensibility/ExtensibilityQueryTestCase.java,v
  retrieving revision 1.14
  retrieving revision 1.14.2.1
  diff -u -r1.14 -r1.14.2.1
  --- ExtensibilityQueryTestCase.java   11 Dec 2002 22:40:20 -0000      1.14
  +++ ExtensibilityQueryTestCase.java   26 Feb 2003 05:21:26 -0000      1.14.2.1
  @@ -37,7 +37,6 @@
           try {
               ExtensibilityQueryLocator locator = new ExtensibilityQueryLocator();
               binding = locator.getExtensibilityQueryPort();
  -            addDynamicTypeMappings(locator.getEngine());
               deployServer();
           }
           catch (javax.xml.rpc.ServiceException jre) {
  @@ -53,60 +52,42 @@
   
           try {
               ExtensibilityType expression = new ExtensibilityType(); 
  -            FindBooksQueryExpressionElement bookQuery = new 
FindBooksQueryExpressionElement(); 
               BookType book = new BookType();
               book.setSubject("all");
  -            bookQuery.setBookQuery(book);
  -            MessageElement el = new MessageElement("foo", "Bar", bookQuery);
  +            QName elementName = 
FindBooksQueryExpressionElement.getTypeDesc().getFields()[0].getXmlName();
  +            MessageElement el = new MessageElement(elementName.getNamespaceURI(), 
elementName.getLocalPart(), book);
               expression.set_any(new MessageElement [] { el });
               // call the operation
               ExtensibilityType any = binding.query(expression);
               // validate results
               MessageElement [] anyContent = any.get_any();
               assertEquals(1, anyContent.length);
  -            QueryResultElement resEl = (QueryResultElement 
)anyContent[0].getObjectValue();
  -            assertNotNull("QueryResultElement back from 
anyContent[0].getObjectValue()", resEl);
  -            ResultListType result = resEl.getResultList();
  -            assertNotNull("ResultListType back from getResultList()", result);
  +            ResultListType result = 
(ResultListType)anyContent[0].getObjectValue(ResultListType.class);
  +            root.debug("Message " + result + ": " + anyContent[0].toString());
  +            assertNotNull("ResultListType back from getResultList() is null", 
result);
               QueryResultType[] queryResult = result.getResult();
               assertTrue(queryResult.length == 2); 
               isValid(queryResult[0], "Computer Science", "The Grid"); 
               isValid(queryResult[1], "English", "The Oxford Dictionary"); 
           }
  -        catch (java.rmi.RemoteException re) {
  -            throw new junit.framework.AssertionFailedError("Remote Exception 
caught: " + re);
  +        catch (Exception e) {
  +            e.printStackTrace();
  +            throw new junit.framework.AssertionFailedError("Exception caught: " + 
e);
           }
       }
   
       private void isValid(QueryResultType result, String name, String value) {
  +        Logger root = Logger.getRootLogger();
  +        root.debug("Name: " + result.getName()); 
  +        root.debug("Value: " + result.getValue()); 
           assertTrue(result.getName().equals(name));
           assertTrue(result.getValue().equals(value));
  +        assertTrue(result.getStatus().equals(StatusType.MORE));
           Calendar now = Calendar.getInstance();
           Calendar then = result.getTime();
           assertTrue("Time check failed.  Result time = " + then + ", current time = 
" + now, then.before(now));
           assertTrue(result.getQueryType().getNamespaceURI().equals("urn:QueryType"));
           assertTrue(result.getQueryType().getLocalPart().equals("BookQuery"));
  -    }
  -
  -    private void addDynamicTypeMappings(AxisEngine engine) throws Exception {
  -        TypeMappingRegistry registry = engine.getTypeMappingRegistry(); 
  -        TypeMapping mapping = registry.createTypeMapping();
  -        addBeanMapping(mapping, "FindBooksQueryExpressionElement", 
FindBooksQueryExpressionElement.class);
  -        addBeanMapping(mapping, "BookType", BookType.class);
  -        addBeanMapping(mapping, "ResultListType", ResultListType.class);
  -        addBeanMapping(mapping, "QueryResultType", QueryResultType.class);
  -        addBeanMapping(mapping, "QueryResultElement", QueryResultElement.class);
  -        registry.register("",mapping);
  -        EngineConfiguration config = engine.getConfig();
  -        config.writeEngineConfig(engine);
  -    }
  -
  -    private void addBeanMapping(TypeMapping mapping, String localName, Class 
javaClass) {
  -        QName qname = new QName("urn:QueryTypes", localName);
  -        mapping.register(javaClass,
  -                         qname,
  -                         new BeanSerializerFactory(javaClass, qname),
  -                         new BeanDeserializerFactory(javaClass, qname));
       }
   
       private void deployServer() {
  
  
  
  1.2.14.1  +8 -0      xml-axis/java/test/wsdl/extensibility/QueryTypes.wsdl
  
  Index: QueryTypes.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/extensibility/QueryTypes.wsdl,v
  retrieving revision 1.2
  retrieving revision 1.2.14.1
  diff -u -r1.2 -r1.2.14.1
  --- QueryTypes.wsdl   8 May 2002 13:04:46 -0000       1.2
  +++ QueryTypes.wsdl   26 Feb 2003 05:21:26 -0000      1.2.14.1
  @@ -38,8 +38,16 @@
           <xsd:attribute name="value" type="xsd:string"/>
           <xsd:attribute name="time" type="xsd:dateTime"/>
           <xsd:attribute name="queryType" type="xsd:QName"/>
  +        <xsd:attribute name="status" type="tns:StatusType"/>
         </xsd:complexType>
   
  +      <xsd:simpleType name="StatusType">
  +        <xsd:restriction base="xsd:string">
  +          <xsd:enumeration value="MORE"/>
  +          <xsd:enumeration value="LESS"/>
  +        </xsd:restriction>
  +      </xsd:simpleType>
  +      
       </xsd:schema>
     </types>
   </definitions>
  
  
  
  1.6.8.1   +0 -61     xml-axis/java/test/wsdl/extensibility/server-deploy.wsdd
  
  Index: server-deploy.wsdd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/extensibility/server-deploy.wsdd,v
  retrieving revision 1.6
  retrieving revision 1.6.8.1
  diff -u -r1.6 -r1.6.8.1
  --- server-deploy.wsdd        19 Sep 2002 20:25:12 -0000      1.6
  +++ server-deploy.wsdd        26 Feb 2003 05:21:26 -0000      1.6.8.1
  @@ -16,67 +16,6 @@
         <parameter name="className" 
value="test.wsdl.extensibility.ExtensibilityQueryBindingSkeleton"/>
         <parameter name="allowedMethods" value="*"/>
         <parameter name="scope" value="Session"/>
  -
  -      <typeMapping
  -        xmlns:ns="urn:ExtensibilityQuery"
  -        qname="ns:ExtensibilityType"
  -        type="java:test.wsdl.extensibility.ExtensibilityType"
  -        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
  -        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
  -        encodingStyle=""
  -      />
  -      
  -        <!-- Removed.  The xsd:any is now mapped to a type XSD_ANY that 
  -        automatically uses the ElementSerializer/ElementDeserializer 
  -      <typeMapping
  -        qname="xsd:anyType"
  -        type="java:java.lang.Object"
  -        serializer="org.apache.axis.encoding.ser.ElementSerializerFactory"
  -        deserializer="org.apache.axis.encoding.ser.ElementDeserializerFactory"
  -        encodingStyle=""
  -      />
  -      -->
  -
  -
  -      <typeMapping
  -        qname="query:QueryResultElement"
  -        type="java:test.wsdl.extensibility.QueryResultElement"
  -        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
  -        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
  -        encodingStyle=""
  -      />
  -
  -      <typeMapping
  -        qname="query:QueryResultType"
  -        type="java:test.wsdl.extensibility.QueryResultType"
  -        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
  -        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
  -        encodingStyle=""
  -      />
  -
  -      <typeMapping
  -        qname="query:ResultListType"
  -        type="java:test.wsdl.extensibility.ResultListType"
  -        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
  -        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
  -        encodingStyle=""
  -      />
  -
  -        <typeMapping
  -           qname="query:BookType"
  -           type="java:test.wsdl.extensibility.BookType"
  -           serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
  -           deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
  -           encodingStyle=""
  -        />
  -
  -        <typeMapping
  -           qname="query:FindBooksQueryExpressionElement"
  -           type="java:test.wsdl.extensibility.FindBooksQueryExpressionElement"
  -           serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
  -           deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
  -           encodingStyle=""
  -        />
       </service>
   
   
  
  
  

Reply via email to