whitlock    2002/06/10 10:03:54

  Modified:    java/src/org/apache/wsif/providers/soap/apachesoap
                        SOAPJMSConnection.java WSIFPort_ApacheSOAP.java
                        WSIFOperation_ApacheSOAP.java
               java/test/inout InoutTest.java
               java/src/org/apache/wsif/util/jms WSIFJMSDestination.java
                        WSIFJMSProperties.java
               java/src/org/apache/wsif/wsdl/extensions/jms
                        JMSPropertyValueSerializer.java
               java/src/org/apache/wsif WSIFClientProxy.java
               java/src/org/apache/wsif/util WSIFDefaultOperation.java
               java/src/org/apache/wsif/providers/soap/apacheaxis
                        WSIFOperation_ApacheAxis.java
                        WSIFPort_ApacheAxis.java
               java/test/jms JmsTest.java Jms.wsdl
  Log:
  Migrate <jms:propertyValue and other JMS fixes to org.apache.wsif
  
  Revision  Changes    Path
  1.2       +7 -0      
xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap/SOAPJMSConnection.java
  
  Index: SOAPJMSConnection.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap/SOAPJMSConnection.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SOAPJMSConnection.java    6 Jun 2002 08:28:51 -0000       1.1
  +++ SOAPJMSConnection.java    10 Jun 2002 17:03:53 -0000      1.2
  @@ -64,6 +64,7 @@
   import java.io.StringWriter;
   import java.net.URL;
   import java.util.Hashtable;
  +import java.util.HashMap;
   
   import javax.mail.MessagingException;
   import org.apache.soap.Envelope;
  @@ -235,6 +236,12 @@
       public void setJmsProperty(String name, Object value) throws WSIFException {
           Tr.entry(this, name, value);
           destination.setProperty(name, value);
  +        Tr.exit();
  +    }
  +
  +    public void setJmsProperties(HashMap hm) throws WSIFException { 
  +        Tr.entry(this,hm);
  +        destination.setProperties(hm);  
           Tr.exit();
       }
   
  
  
  
  1.2       +24 -0     
xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap/WSIFPort_ApacheSOAP.java
  
  Index: WSIFPort_ApacheSOAP.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap/WSIFPort_ApacheSOAP.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSIFPort_ApacheSOAP.java  6 Jun 2002 08:28:51 -0000       1.1
  +++ WSIFPort_ApacheSOAP.java  10 Jun 2002 17:03:53 -0000      1.2
  @@ -91,6 +91,7 @@
   import org.apache.wsif.util.WSIFDefaultPort;
   import org.apache.wsif.wsdl.extensions.jms.JMSAddress;
   import org.apache.wsif.wsdl.extensions.jms.JMSProperty;
  +import org.apache.wsif.wsdl.extensions.jms.JMSPropertyValue;
   
   /**
    * This is Apache SOAP dynamic WSIF port  that is driven by WSDL.
  @@ -116,6 +117,7 @@
       protected String partSerializerName = null;
       private static final boolean DEBUG = false; //for internal use only
       private WSIFDynamicTypeMap wsifTypeMap = null;
  +    private List jmsAddressPropVals = null;
   
       /**
        * Create dynamic port instance from WDL model defintion and port.
  @@ -158,6 +160,7 @@
   
           if (ja != null) {
               // Port jms:address binding element
  +            jmsAddressPropVals = ja.getJMSPropertyValues();
               st = new SOAPJMSConnection(ja);
           } else {
               // Port soap:address bindng element
  @@ -426,6 +429,14 @@
                   operation.setStyle(this.style);
                   operation.setPartSerializerName(this.partSerializerName);
   
  +                if (jmsAddressPropVals != null
  +                    && jmsAddressPropVals.size() > 0) {
  +                    if (st instanceof SOAPJMSConnection)
  +                        operation.addInputJmsPropertyValues(jmsAddressPropVals);
  +                    else
  +                        throw new WSIFException("jms:propertyValue found in non-jms 
address");
  +                }
  +
                   // get soapActionURI and style from soap:operation
                   SOAPOperation soapOperation =
                       (SOAPOperation) getExtElem(bop,
  @@ -486,6 +497,18 @@
                           throw new WSIFException("jms:properties found in non-jms 
binding");
                   }
   
  +                List inJmsPropVals =
  +                    getExtElems(
  +                        binpt,
  +                        JMSPropertyValue.class,
  +                        binpt.getExtensibilityElements());
  +                if (inJmsPropVals != null && inJmsPropVals.size() > 0) {
  +                    if (st instanceof SOAPJMSConnection)
  +                        operation.addInputJmsPropertyValues(inJmsPropVals);
  +                    else
  +                        throw new WSIFException("jms:propertyValue found in non-jms 
binding");
  +                }
  +             
                   // try to get soap:body for output message
                   BindingOutput boutpt = bop.getBindingOutput();
                   if (boutpt != null) {
  @@ -608,6 +631,7 @@
               buff += " style:" + style;
               buff += " partSerializerName:" + partSerializerName;
               buff += " wsifTypeMap:" + wsifTypeMap;
  +            buff += " jmsAddressPropVals:" + jmsAddressPropVals;
           } catch (Exception e) {
               Tr.exceptionInTrace(e);
           }
  
  
  
  1.3       +8 -44     
xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap/WSIFOperation_ApacheSOAP.java
  
  Index: WSIFOperation_ApacheSOAP.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap/WSIFOperation_ApacheSOAP.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WSIFOperation_ApacheSOAP.java     10 Jun 2002 10:23:05 -0000      1.2
  +++ WSIFOperation_ApacheSOAP.java     10 Jun 2002 17:03:53 -0000      1.3
  @@ -137,8 +137,6 @@
   
       transient protected Class returnType;
       transient protected String actionUri;
  -    transient protected HashMap inJmsProps = new HashMap();
  -    transient protected HashMap outJmsProps = new HashMap();
   
       // info for async operation
       transient protected boolean asyncOperation;
  @@ -195,6 +193,7 @@
           op.setResponseHandler(getResponseHandler());
           op.setInputJmsProperties(getInputJmsProperties());
           op.setOutputJmsProperties(getOutputJmsProperties());
  +        op.setInputJmsPropertyValues(getInputJmsPropertyValues());
   
           if (Tr.ON)
               Tr.exit(op.deep());
  @@ -514,6 +513,9 @@
           call.setTargetObjectURI(getInputNamespace());
           call.setMethodName(getName());
   
  +        if (inJmsPropVals!=null && !inJmsPropVals.isEmpty()) 
  +            ((SOAPJMSConnection)st).setJmsProperties(inJmsPropVals);
  +
           setTransportContext( st ); // TODO WSDL props override context???
    
           Vector params = new Vector();
  @@ -708,6 +710,9 @@
   
           SOAPTransport st = getTransport();
   
  +        if (inJmsPropVals!=null && !inJmsPropVals.isEmpty()) 
  +            ((SOAPJMSConnection)st).setJmsProperties(inJmsPropVals);
  +
           //TODO docstyle headers
           //setCallContext( call );
   
  @@ -1257,48 +1262,6 @@
       }
   
       /**
  -     * Sets the input Jms properties for this operation
  -     */
  -    public void setInputJmsProperties(List list) {
  -        Tr.entry(this, list);
  -        inJmsProps = makeJmsPropertyMap(list);
  -        Tr.exit();
  -    }
  -
  -    /**
  -     * Sets the output Jms properties for this operation
  -     */
  -    public void setOutputJmsProperties(List list) {
  -        Tr.entry(this, list);
  -        outJmsProps = makeJmsPropertyMap(list);
  -        Tr.exit();
  -    }
  -
  -    public void setInputJmsProperties(HashMap hm) {
  -        Tr.entry(this, hm);
  -        inJmsProps = hm;
  -        Tr.exit();
  -    }
  -
  -    public void setOutputJmsProperties(HashMap hm) {
  -        Tr.entry(this, hm);
  -        outJmsProps = hm;
  -        Tr.exit();
  -    }
  -
  -    public HashMap getInputJmsProperties() {
  -        Tr.entry(this);
  -        Tr.exit(inJmsProps);
  -        return inJmsProps;
  -    }
  -
  -    public HashMap getOutputJmsProperties() {
  -        Tr.entry(this);
  -        Tr.exit(outJmsProps);
  -        return outJmsProps;
  -    }
  -
  -    /**
        * Allows the application programmer or stub to pass context 
        * information to the binding. The Port implementation may use 
        * this context - for example to update a SOAP header. There is 
  @@ -1430,6 +1393,7 @@
               buff += " actionUri:" + actionUri;
               buff += " inJmsProps:" + inJmsProps;
               buff += " outJmsProps:" + outJmsProps;
  +            buff += " inJmsPropVals:"+inJmsPropVals;
               buff += " asyncOperation:" + asyncOperation;
               buff += " asyncRequestID:" + asyncRequestID;
               buff += " responseHandler:" + responseHandler;
  
  
  
  1.2       +37 -0     xml-axis-wsif/java/test/inout/InoutTest.java
  
  Index: InoutTest.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/test/inout/InoutTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InoutTest.java    6 Jun 2002 08:28:55 -0000       1.1
  +++ InoutTest.java    10 Jun 2002 17:03:53 -0000      1.2
  @@ -115,6 +115,7 @@
       private final static String ADD = "add";
       private final static String DATE = "date";
       private final static String SUPC = "supc";
  +    private final static String GENC = "genericc";                                  
    
       private final static String WHOAMI = "whoami";
       private final static String INOUT = "inout";
   
  @@ -208,6 +209,22 @@
       public void testSupCAxisJms() {
           doit("SOAPJMSPort", AXIS, RPC, SUPC);
       }
  +    public void testGenCAxis() {
  +        doit("SOAPPort", AXIS, RPC, GENC);
  +    }
  +    public void testGenCSoap() {
  +        doit("SOAPPort", SOAP, RPC, GENC);
  +    }
  +    public void testGenCJava() {
  +        doit("JavaPort", JAVA, RPC, GENC);
  +    }
  +    public void testGenCSoapJms() {
  +        doit("SOAPJMSPort", SOAP, RPC, GENC);
  +    }
  +    public void testGenCAxisJms() {
  +        doit("SOAPJMSPort", AXIS, RPC, GENC);
  +    }
  +
   
       //public void testWhoAxis       () { doit("SOAPPort"      ,AXIS,RPC, WHOAMI  ); 
} FAILS
       public void testWhoSoap() {
  @@ -272,6 +289,8 @@
                   date(stub);
               else if (cmd.equals(SUPC))
                   supc(service, portName);
  +            else if (cmd.equals(GENC)) 
  +                genericc(service, portName);
               else if (cmd.equals(WHOAMI))
                   whoami(stub);
               else if (cmd.equals(INOUT))
  @@ -397,6 +416,24 @@
           Mutablestring msName2 = new Mutablestring(name2);
           Address resp2 = stub.getAddressFromName(msName2);
           assertTrue(new AddressUtility(addr2).equals(resp2));
  +    }
  +
  +    private interface GenericInout {
  +        public void addEntry(String wholeName, Object address)
  +            throws java.rmi.RemoteException;
  +        public Address getAddressFromName(Mutablestring name)
  +            throws java.rmi.RemoteException;
  +    }
  +
  +    private void genericc(WSIFService service, String portName)
  +        throws Exception {
  +        GenericInout stub =
  +            (GenericInout) service.getStub(portName, GenericInout.class);
  +
  +        stub.addEntry(name1, addr1);
  +        Mutablestring msName1 = new Mutablestring(name1);
  +        Address resp1 = stub.getAddressFromName(msName1);
  +        assertTrue(new AddressUtility(addr1).equals(resp1));
       }
   
       /**
  
  
  
  1.3       +0 -12     
xml-axis-wsif/java/src/org/apache/wsif/util/jms/WSIFJMSDestination.java
  
  Index: WSIFJMSDestination.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/util/jms/WSIFJMSDestination.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WSIFJMSDestination.java   7 Jun 2002 08:42:29 -0000       1.2
  +++ WSIFJMSDestination.java   10 Jun 2002 17:03:53 -0000      1.3
  @@ -96,7 +96,6 @@
       protected WSIFJMSProperties inProps;
       protected WSIFJMSProperties outProps;
       protected Message lastMessage = null;
  -    protected String header = null;
       protected long timeout;
       protected String replyToName = null;
   
  @@ -301,7 +300,6 @@
               if (propsSet)
                   sender = null;
               inProps.clear();
  -            header = null;
           }
   
           Tr.exit(msgId);
  @@ -503,15 +501,6 @@
           return null;
       }
   
  -    /**
  -     * Sets a JMS header
  -     */
  -    public void setHeader(String value) {
  -        Tr.entry(this, value);
  -        header = value;
  -        Tr.exit();
  -    }
  -
       protected void areWeClosed() throws WSIFException {
           if (session == null)
               throw new WSIFException("Cannot use a closed destination");
  @@ -561,7 +550,6 @@
               buff += " inProps: " + inProps;
               buff += " outProps: " + outProps;
               buff += " lastMessage: " + lastMessage;
  -            buff += " header: " + header;
               buff += " timeout: " + timeout;
               buff += " replyToName: " + replyToName;
           } catch (Exception e) {
  
  
  
  1.2       +99 -78    
xml-axis-wsif/java/src/org/apache/wsif/util/jms/WSIFJMSProperties.java
  
  Index: WSIFJMSProperties.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/util/jms/WSIFJMSProperties.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSIFJMSProperties.java    6 Jun 2002 08:28:52 -0000       1.1
  +++ WSIFJMSProperties.java    10 Jun 2002 17:03:53 -0000      1.2
  @@ -63,7 +63,9 @@
   import java.util.Arrays;
   import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.Enumeration;
   
  +import javax.jms.Destination;
   import javax.jms.JMSException;
   import javax.jms.Message;
   import javax.jms.MessageProducer;
  @@ -85,6 +87,23 @@
       private static final ArrayList allDirections =
           new ArrayList(Arrays.asList(new Object[] { IN, OUT }));
   
  +    private static final String CORRELATIONID = "JMSCorrelationID";
  +    private static final String DELIVERYMODE  = "JMSDeliveryMode";
  +    private static final String DESTINATION   = "JMSDestination";
  +    private static final String EXPIRATION    = "JMSExpiration";
  +    private static final String MESSAGEID     = "JMSMessageID";
  +    private static final String PRIORITY      = "JMSPriority";
  +    private static final String REDELIVERED   = "JMSRedelivered";
  +    private static final String REPLYTO       = "JMSReplyTo";
  +    private static final String TIMESTAMP     = "JMSTimestamp";
  +    private static final String TIMETOLIVE    = "JMSTimeToLive";
  +    private static final String TYPE          = "JMSType";
  +  
  +    private static final ArrayList predefinedProps = 
  +        new ArrayList(Arrays.asList(new Object[]{
  +         CORRELATIONID,DELIVERYMODE,DESTINATION,EXPIRATION,PRIORITY,
  +         REDELIVERED,REPLYTO,TIMESTAMP,TIMETOLIVE}));
  +
       private String direction;
   
       /**
  @@ -116,83 +135,88 @@
        */
       public boolean set(MessageProducer producer, Message message)
           throws WSIFException {
  -        Tr.entry(this, producer);
  +        Tr.entry(this, producer, message);
           if (direction != IN)
               throw new WSIFException("Only input properties can be set on a 
MessageProducer");
  -
  +    
           if (isEmpty()) {
               Tr.exit(false);
               return false;
           }
  -
  +    
           for (Iterator it = keySet().iterator(); it.hasNext();)
               try {
                   String prop = (String) (it.next());
                   Object value = get(prop);
                   Class type = value.getClass();
  -                boolean found = false;
  -
  -                Object[] targets = new Object[] { producer, message };
  -
  -                if (prop.startsWith("JMS"))
  -                    for (int targIdx = 0; targIdx < targets.length; targIdx++) {
  -                        Method[] methods = targets[targIdx].getClass().getMethods();
  -                        if (methods == null || methods.length == 0)
  -                            throw new WSIFException(
  -                                "No methods on " + 
targets[targIdx].getClass().toString());
  -
  -                        String choppedProp = prop.substring(3);
  -                        boolean foundInTarget = false;
  -                        for (int methIdx = 0; methIdx < methods.length && 
!foundInTarget; methIdx++) {
  -                            if (methods[methIdx].getName().equals("set" + 
choppedProp)) {
  -                                // Check types in case setXxx is overloaded.
  -                                Class[] types = 
methods[methIdx].getParameterTypes();
  -                                if (types == null || types.length != 1)
  -                                    continue;
  -
  -                                if (types[0].equals(type)
  -                                    || (types[0].equals(int.class) && 
type.equals(Integer.class))
  -                                    || (types[0].equals(long.class) && 
type.equals(Long.class))) {
  -                                    foundInTarget = true;
  -                                    methods[methIdx].invoke(producer, new Object[] 
{ value });
  -                                }
  -                            } // end if
  -                        } // end for
  -
  -                        if (foundInTarget)
  -                            found = true;
  -                    } // end if
  -
  +    
  +                if (predefinedProps.contains(prop))
  +                    try {
  +                        if (prop.equals(CORRELATIONID)) {
  +                            message.setJMSCorrelationID((String) value);
  +                        } else if (prop.equals(DELIVERYMODE)) {
  +                            message.setJMSDeliveryMode(
  +                                ((Integer) value).intValue());
  +                            producer.setDeliveryMode(((Integer) value).intValue());
  +                        } else if (prop.equals(DESTINATION)) {
  +                            message.setJMSDestination((Destination) value);
  +                        } else if (prop.equals(EXPIRATION)) {
  +                            message.setJMSExpiration(((Integer) value).intValue());
  +                        } else if (prop.equals(PRIORITY)) {
  +                            message.setJMSPriority(((Integer) value).intValue());
  +                            producer.setPriority(((Integer) value).intValue());
  +                        } else if (prop.equals(REDELIVERED)) {
  +                            message.setJMSRedelivered(
  +                                ((Boolean) value).booleanValue());
  +                        } else if (prop.equals(REPLYTO)) {
  +                            message.setJMSReplyTo((Destination) value);
  +                        } else if (prop.equals(TIMESTAMP)) {
  +                            message.setJMSTimestamp(((Long) value).longValue());
  +                        } else if (prop.equals(TIMETOLIVE)) {
  +                            producer.setTimeToLive(((Long) value).longValue());
  +                        }
  +                    } catch (ClassCastException ce) {
  +                        throw new WSIFException(
  +                            "Unexpected type "
  +                                + type
  +                                + " for JMS property "
  +                                + prop
  +                                + ".");
  +                    }
  +    
                   // User defined properties
  -                if (!found) {
  +                else {
                       if (type.equals(String.class))
                           message.setStringProperty(prop, value.toString());
  -                    if (type.equals(Integer.class))
  +                    else if (type.equals(Integer.class))
                           message.setIntProperty(prop, ((Integer) value).intValue());
  -                    if (type.equals(Boolean.class))
  -                        message.setBooleanProperty(prop, ((Boolean) 
value).booleanValue());
  -                    if (type.equals(Byte.class))
  +                    else if (type.equals(Boolean.class))
  +                        message.setBooleanProperty(
  +                            prop,
  +                            ((Boolean) value).booleanValue());
  +                    else if (type.equals(Byte.class))
                           message.setByteProperty(prop, ((Byte) value).byteValue());
  -                    if (type.equals(Double.class))
  -                        message.setDoubleProperty(prop, ((Double) 
value).doubleValue());
  -                    if (type.equals(Float.class))
  -                        message.setFloatProperty(prop, ((Float) 
value).floatValue());
  -                    if (type.equals(Long.class))
  +                    else if (type.equals(Double.class))
  +                        message.setDoubleProperty(
  +                            prop,
  +                            ((Double) value).doubleValue());
  +                    else if (type.equals(Float.class))
  +                        message.setFloatProperty(
  +                            prop,
  +                            ((Float) value).floatValue());
  +                    else if (type.equals(Long.class))
                           message.setLongProperty(prop, ((Long) value).longValue());
  -                    if (type.equals(Short.class))
  -                        message.setShortProperty(prop, ((Short) 
value).shortValue());
  +                    else if (type.equals(Short.class))
  +                        message.setShortProperty(
  +                            prop,
  +                            ((Short) value).shortValue());
                       else
                           message.setObjectProperty(prop, value);
                   }
  -
  -            } catch (InvocationTargetException ite) {
  -                throw WSIFJMSConstants.ToWsifException(ite.getTargetException());
  -            } catch (IllegalAccessException iae) {
  -                throw WSIFJMSConstants.ToWsifException(iae);
               } catch (JMSException je) {
                   throw WSIFJMSConstants.ToWsifException(je);
               }
  -
  +    
           Tr.exit(true);
           return true;
       }
  @@ -204,33 +228,30 @@
           Tr.entry(this, message);
           if (direction != OUT)
               throw new WSIFException("Only output properties can be got from a 
message");
  -
  -        Method[] methods = message.getClass().getMethods();
  -        if (methods == null || methods.length == 0)
  -            throw new WSIFException("No methods on Message");
  -
  +    
           clear();
  -
  -        for (int i = 0; i < methods.length; i++) {
  -            try {
  -                if (methods[i].getName().startsWith("get")
  -                    && methods[i].getParameterTypes().length == 0) {
  -                    Object value = methods[i].invoke(message, null);
  -
  -                    String prop;
  -                    if (methods[i].getName().startsWith("getJMS"))
  -                        prop = methods[i].getName().substring(6);
  -                    else
  -                        prop = methods[i].getName().substring(3);
  -                    String extendedProp = "JMS" + prop;
  -
  -                    put(extendedProp, value);
  -                }
  -            } catch (InvocationTargetException ignored) {
  -            } catch (IllegalAccessException ignored) {
  +        try {
  +            put(CORRELATIONID, message.getJMSCorrelationID());
  +            put(DELIVERYMODE, new Integer(message.getJMSDeliveryMode()));
  +            put(DESTINATION, message.getJMSDestination());
  +            put(EXPIRATION, new Long(message.getJMSExpiration()));
  +            put(MESSAGEID, message.getJMSMessageID());
  +            put(PRIORITY, new Integer(message.getJMSPriority()));
  +            put(REDELIVERED, new Boolean(message.getJMSRedelivered()));
  +            put(REPLYTO, message.getJMSReplyTo());
  +            put(TIMESTAMP, new Long(message.getJMSTimestamp()));
  +            put(TYPE, message.getJMSType());
  +    
  +            Enumeration enum = message.getPropertyNames();
  +            while (enum.hasMoreElements()) {
  +                String name = (String) enum.nextElement();
  +                put(name, message.getObjectProperty(name));
               }
  +        } catch (JMSException je) {
  +            throw WSIFJMSConstants.ToWsifException(je);
           }
  -        Tr.exit();
  +    
  +        Tr.exit(deep());
       }
   
       public void clear() {
  
  
  
  1.2       +9 -0      
xml-axis-wsif/java/src/org/apache/wsif/wsdl/extensions/jms/JMSPropertyValueSerializer.java
  
  Index: JMSPropertyValueSerializer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/wsdl/extensions/jms/JMSPropertyValueSerializer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JMSPropertyValueSerializer.java   6 Jun 2002 08:28:54 -0000       1.1
  +++ JMSPropertyValueSerializer.java   10 Jun 2002 17:03:53 -0000      1.2
  @@ -158,10 +158,19 @@
               javax.wsdl.BindingInput.class,
               JMSConstants.Q_ELEM_JMS_PROPERTY_VALUE,
               JMSPropertyValue.class);
  +        registry.registerSerializer(
  +            JMSAddress.class,
  +            JMSConstants.Q_ELEM_JMS_PROPERTY_VALUE,
  +            this);
  +        registry.registerDeserializer(
  +            JMSAddress.class,
  +            JMSConstants.Q_ELEM_JMS_PROPERTY_VALUE,
  +            this);
           registry.mapExtensionTypes(
               JMSAddress.class,
               JMSConstants.Q_ELEM_JMS_PROPERTY_VALUE,
               JMSPropertyValue.class);
  +
           /*
           registry.registerSerializer(
              javax.wsdl.BindingOutput.class,
  
  
  
  1.2       +14 -7     xml-axis-wsif/java/src/org/apache/wsif/WSIFClientProxy.java
  
  Index: WSIFClientProxy.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/WSIFClientProxy.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSIFClientProxy.java      6 Jun 2002 08:28:48 -0000       1.1
  +++ WSIFClientProxy.java      10 Jun 2002 17:03:54 -0000      1.2
  @@ -223,7 +223,7 @@
           throws WSIFException {
           Tr.entry(this, method, args); // Tracing proxy cause a hang
   
  -        Operation operation = findMatchingOperation(method);
  +        Operation operation = findMatchingOperation(method,args);
   
           // Now set up the input and output messages.      
           Input input = operation.getInput();
  @@ -339,8 +339,12 @@
        * null to one of the types that are valid on the method. So the invoke
        * method on our client proxy gets passed args[0]==null which is not typed.
        * However method.getParameterTypes()[0] is the type that java picked to 
  -     * invoke. So we use getParameterTypes() to choose the operation, not 
  -     * args[i].getClass().
  +     * invoke. So we use getParameterTypes() to choose the operation, as well 
  +     * as args[i].getClass().
  +     * 
  +     * We also use args[i].getClass() to choose the operation in case
  +     * getParameterTypes()[i].equals(Object.class) (no match) but 
  +     * args[i].getClass() is the class specified in the operation.
        * 
        * The typeMap only contains complexTypes, so this class also uses the 
        * simpleTypeReg for simple types (int, string, etc).
  @@ -363,7 +367,7 @@
        * If the WSDL is correct, we do not expect that there will be multiple 
        * exact matches, so we do not test for this.
        */
  -    private Operation findMatchingOperation(Method method) throws WSIFException {
  +    private Operation findMatchingOperation(Method method, Object[] args) throws 
WSIFException {
           // Check here that the method is in the interface iface
           Method[] allMethods = iface.getMethods();
           int i;
  @@ -413,11 +417,14 @@
                   // Look this parameter up in the typeMap.
                   for (Iterator mapIt = typeMap.iterator(); mapIt.hasNext() && 
!foundThisArg;) {
                       WSIFDynamicTypeMapping mapping = (WSIFDynamicTypeMapping) 
mapIt.next();
  -
                       if (mapping.getXmlType().equals(partTypeName)) {
  -                        if 
(mapping.getJavaType().isAssignableFrom(types[argIndex])) {
  +                        if (mapping.getJavaType().isAssignableFrom(types[argIndex]) 
        ||
  +                           (args[argIndex]!=null &&
  +                            
mapping.getJavaType().isAssignableFrom(args[argIndex].getClass()))) {
                               foundThisArg = true;
  -                            if (mapping.getJavaType().equals(types[argIndex]))
  +                            if (mapping.getJavaType().equals(types[argIndex]) ||
  +                               (args[argIndex]!=null &&
  +                                
mapping.getJavaType().equals(args[argIndex].getClass())))
                                   exactMatchThisArg = true;
                           } else
                               break;
  
  
  
  1.2       +167 -2    
xml-axis-wsif/java/src/org/apache/wsif/util/WSIFDefaultOperation.java
  
  Index: WSIFDefaultOperation.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/util/WSIFDefaultOperation.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSIFDefaultOperation.java 6 Jun 2002 08:28:52 -0000       1.1
  +++ WSIFDefaultOperation.java 10 Jun 2002 17:03:54 -0000      1.2
  @@ -58,19 +58,40 @@
   package org.apache.wsif.util;
   
   import java.util.HashMap;
  +import java.util.Hashtable;
   import java.util.Iterator;
   import java.util.List;
   
  +import javax.wsdl.QName;
  +
  +import org.apache.soap.Constants;
   import org.apache.wsif.WSIFCorrelationId;
   import org.apache.wsif.WSIFException;
   import org.apache.wsif.WSIFMessage;
   import org.apache.wsif.WSIFOperation;
   import org.apache.wsif.WSIFResponseHandler;
  +import org.apache.wsif.compiler.schema.tools.Schema2Java;
  +import org.apache.wsif.compiler.util.TypeMapping;
   import org.apache.wsif.logging.Tr;
   import org.apache.wsif.wsdl.extensions.jms.JMSProperty;
  +import org.apache.wsif.wsdl.extensions.jms.JMSPropertyValue;
   
   public abstract class WSIFDefaultOperation implements WSIFOperation {
  -
  +    transient protected HashMap inJmsProps = new HashMap();
  +    transient protected HashMap outJmsProps = new HashMap();
  +    transient protected HashMap inJmsPropVals = new HashMap();
  +    transient private Hashtable simpleTypeReg = null;
  +
  +    public WSIFDefaultOperation() {
  +        simpleTypeReg = new Hashtable();
  +        new Schema2Java(Constants.NS_URI_1999_SCHEMA_XSD).getRegistry(
  +            simpleTypeReg);
  +        new Schema2Java(Constants.NS_URI_2000_SCHEMA_XSD).getRegistry(
  +            simpleTypeReg);
  +        new Schema2Java(Constants.NS_URI_2001_SCHEMA_XSD).getRegistry(
  +            simpleTypeReg);
  +    }
  +    
       /**
        * @see WSIFOperation#executeRequestResponseOperation(WSIFMessage, WSIFMessage, 
WSIFMessage)
        */
  @@ -210,9 +231,78 @@
       }
   
       /**
  +     * Sets the input Jms properties for this operation
  +     */
  +    public void setInputJmsProperties(List list) throws WSIFException {
  +        Tr.entry(this, list);
  +        inJmsProps = makeSomeKindOfJmsMap(list);
  +        Tr.exit();
  +    }
  +    
  +    /**
  +     * Sets the output Jms properties for this operation
  +     */
  +    public void setOutputJmsProperties(List list) throws WSIFException {
  +        Tr.entry(this, list);
  +        outJmsProps = makeSomeKindOfJmsMap(list);
  +        Tr.exit();
  +    }
  +    
  +    public void setInputJmsProperties(HashMap hm) {
  +        Tr.entry(this, hm);
  +        inJmsProps = hm;
  +        Tr.exit();
  +    }
  +    
  +    public void setOutputJmsProperties(HashMap hm) {
  +        Tr.entry(this, hm);
  +        outJmsProps = hm;
  +        Tr.exit();
  +    }
  +    
  +    public HashMap getInputJmsProperties() {
  +        Tr.entry(this);
  +        Tr.exit(inJmsProps);
  +        return inJmsProps;
  +    }
  +    
  +    public HashMap getOutputJmsProperties() {
  +        Tr.entry(this);
  +        Tr.exit(outJmsProps);
  +        return outJmsProps;
  +    }
  +    
  +    /**
  +     * This method adds new property values to existing HashMap.
  +     * Where a property value exists in the existing HashMap and the new list, 
  +     * this method replaces the existing property value with the new one from the 
list.
  +     */
  +    public void addInputJmsPropertyValues(List list) throws WSIFException {
  +        Tr.entry(this, list);
  +        if (list != null && !list.isEmpty()) {
  +            HashMap newPvs = makeSomeKindOfJmsMap(list);
  +            newPvs.putAll(inJmsPropVals);
  +            inJmsPropVals = newPvs;
  +        }
  +        Tr.exit();
  +    }
  +    
  +    public void setInputJmsPropertyValues(HashMap hm) {
  +        Tr.entry(this, hm);
  +        inJmsPropVals = hm;
  +        Tr.exit();
  +    }
  +    
  +    public HashMap getInputJmsPropertyValues() {
  +        Tr.entry(this);
  +        Tr.exit(inJmsPropVals);
  +        return inJmsPropVals;
  +    }
  +    
  +    /**
        * Utility method that sets the jms properties for this operation
        */
  -    protected HashMap makeJmsPropertyMap(List list) {
  +    protected HashMap makeSomeKindOfJmsMap(List list) throws WSIFException {
           Tr.entry(this, list);
           HashMap props = new HashMap(list.size());
           for (Iterator it = list.iterator(); it.hasNext();) {
  @@ -220,6 +310,81 @@
               if (ee instanceof JMSProperty) {
                   JMSProperty prop = (JMSProperty) ee;
                   props.put(prop.getPart(), prop.getName());
  +            } else if (ee instanceof JMSPropertyValue) {
  +                JMSPropertyValue propVal = (JMSPropertyValue) ee;
  +    
  +                String name = propVal.getName();
  +                if (name == null || name.length() == 0)
  +                    throw new WSIFException("jms:propertyValue found without a 
name");
  +    
  +                QName type = propVal.getType();
  +                if (type == null)
  +                    throw new WSIFException(
  +                        "jms:propertyValue " + name + " did not have a type");
  +                if (type.getNamespaceURI() == null || type.getLocalPart() == null)
  +                    throw new WSIFException(
  +                        "jms:propertyValue " + name + " has a badly formed type");
  +    
  +                String value = propVal.getValue();
  +                if (value == null || value.length() == 0)
  +                    throw new WSIFException(
  +                        "jms:propertyValue " + name + " did not have a value");
  +    
  +                TypeMapping tm = (TypeMapping) (simpleTypeReg.get(type));
  +                if (tm == null || tm.javaType == null)
  +                    throw new WSIFException(
  +                        "jms:propertyValue "
  +                            + name
  +                            + " had a type that was "
  +                            + "unknown or was not a simple type");
  +    
  +                Class javaClass = null;
  +                try {
  +                    javaClass =
  +                        Class.forName(
  +                            tm.javaType,
  +                            true,
  +                            Thread.currentThread().getContextClassLoader());
  +                } catch (ClassNotFoundException cce) {
  +                    throw new WSIFException(
  +                        "Unexpected ClassNotFoundException when processing "
  +                            + "jms:propertyValue "
  +                            + name
  +                            + ". Could not convert the type to a java class. "
  +                            + cce);
  +                }
  +    
  +                Object obj = null;
  +                try {
  +                    if (javaClass.equals(String.class))
  +                        obj = value;
  +                    else if (javaClass.equals(Integer.class))
  +                        obj = new Integer(value);
  +                    else if (javaClass.equals(Boolean.class))
  +                        obj = new Boolean(value);
  +                    else if (javaClass.equals(Byte.class))
  +                        obj = new Byte(value);
  +                    else if (javaClass.equals(Double.class))
  +                        obj = new Double(value);
  +                    else if (javaClass.equals(Float.class))
  +                        obj = new Float(value);
  +                    else if (javaClass.equals(Long.class))
  +                        obj = new Long(value);
  +                    else if (javaClass.equals(Short.class))
  +                        obj = new Short(value);
  +                    else
  +                        throw new WSIFException(
  +                            "jms:propertyValue " + name + " had an invalid type");
  +                } catch (NumberFormatException nfe) {
  +                    throw new WSIFException(
  +                        "jms:propertyValue "
  +                            + name
  +                            + " a value that could not "
  +                            + "be converted into the specified type. Caught 
NumberFormatException. "
  +                            + nfe);
  +                }
  +    
  +                props.put(name, obj);
               }
           }
           Tr.exit(props);
  
  
  
  1.4       +5 -61     
xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java
  
  Index: WSIFOperation_ApacheAxis.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WSIFOperation_ApacheAxis.java     10 Jun 2002 10:23:06 -0000      1.3
  +++ WSIFOperation_ApacheAxis.java     10 Jun 2002 17:03:54 -0000      1.4
  @@ -116,9 +116,6 @@
       transient protected String inputEncodingStyle;
       transient protected String inputNamespace;
       transient protected String actionUri;
  -    transient protected HashMap inJmsProps = new HashMap();
  -    transient protected HashMap outJmsProps = new HashMap();
  -    transient protected String jmsHeader = null;
       transient protected WSIFMessage context;
       transient protected Class returnType = null;
   
  @@ -169,7 +166,7 @@
           op.setResponseHandler(getResponseHandler());
           op.setInputJmsProperties(getInputJmsProperties());
           op.setOutputJmsProperties(getOutputJmsProperties());
  -        op.setJmsHeader(getJmsHeader());
  +        op.setInputJmsPropertyValues(getInputJmsPropertyValues());
   
           if (Tr.ON)
               Tr.exit(op.deep());
  @@ -534,8 +531,6 @@
               call.setTransport(axistransport);
               if (axistransport instanceof WSIFJmsTransport) {
                   dest = ((WSIFJmsTransport) axistransport).getDestination();
  -                if (jmsHeader != null)
  -                    dest.setHeader(jmsHeader);
                   dest.setAsyncMode(isAsyncOperation());
               }
           }
  @@ -543,6 +538,9 @@
           if (names == null)
               prepare(call);
   
  +        if (inJmsPropVals!=null && !inJmsPropVals.isEmpty()) 
  +          dest.setProperties(inJmsPropVals);
  +
           setDestinationContext( dest ); // TODO WSDL props override context???
   
           ArrayList objects = new ArrayList();
  @@ -781,60 +779,6 @@
       }
   
       /**
  -     * Sets the input Jms properties for this operation
  -     */
  -    public void setInputJmsProperties(List list) {
  -        Tr.entry(this, list);
  -        inJmsProps = makeJmsPropertyMap(list);
  -        Tr.exit();
  -    }
  -
  -    /**
  -     * Sets the output Jms properties for this operation
  -     */
  -    public void setOutputJmsProperties(List list) {
  -        Tr.entry(this, list);
  -        outJmsProps = makeJmsPropertyMap(list);
  -        Tr.exit();
  -    }
  -
  -    public void setInputJmsProperties(HashMap hm) {
  -        Tr.entry(this, hm);
  -        inJmsProps = hm;
  -        Tr.exit();
  -    }
  -
  -    public void setOutputJmsProperties(HashMap hm) {
  -        Tr.entry(this, hm);
  -        outJmsProps = hm;
  -        Tr.exit();
  -    }
  -
  -    public HashMap getInputJmsProperties() {
  -        Tr.entry(this);
  -        Tr.exit(inJmsProps);
  -        return inJmsProps;
  -    }
  -
  -    public HashMap getOutputJmsProperties() {
  -        Tr.entry(this);
  -        Tr.exit(outJmsProps);
  -        return outJmsProps;
  -    }
  -
  -    public void setJmsHeader(String value) {
  -        Tr.entry(this, value);
  -        jmsHeader = value;
  -        Tr.exit();
  -    }
  -
  -    public String getJmsHeader() {
  -        Tr.entry(this);
  -        Tr.exit(jmsHeader);
  -        return jmsHeader;
  -    }
  -
  -    /**
        * Gets the target namespace URI of this WSIFOperation 
        * 
        * @return the target namespace URI
  @@ -1033,7 +977,7 @@
               buff += " actionUri:" + actionUri;
               buff += " inJmsProps:" + inJmsProps;
               buff += " outJmsProps:" + outJmsProps;
  -            buff += " jmsHeader:" + jmsHeader;
  +            buff += " inJmsPropVals:" + inJmsPropVals;
               buff += " context:" + context;
               buff += " returnType:" + returnType;
               buff += " asyncOperation:" + asyncOperation;
  
  
  
  1.2       +20 -1     
xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFPort_ApacheAxis.java
  
  Index: WSIFPort_ApacheAxis.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFPort_ApacheAxis.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSIFPort_ApacheAxis.java  6 Jun 2002 08:28:51 -0000       1.1
  +++ WSIFPort_ApacheAxis.java  10 Jun 2002 17:03:54 -0000      1.2
  @@ -95,6 +95,7 @@
   import org.apache.wsif.util.jms.WSIFJMSFinder;
   import org.apache.wsif.wsdl.extensions.jms.JMSAddress;
   import org.apache.wsif.wsdl.extensions.jms.JMSProperty;
  +import org.apache.wsif.wsdl.extensions.jms.JMSPropertyValue;
   
   /**
    * @author Mark Whitlock <[EMAIL PROTECTED]>
  @@ -107,6 +108,7 @@
       protected URL url = null;
       protected int transportcode;
       protected Transport st;
  +    protected List jmsAddressPropVals = null;
       private static final boolean DEBUG = false;
       private static final int HTTP_TRANSPORT = 1;
       private static final int JMS_TRANSPORT = 2;
  @@ -161,6 +163,7 @@
               }
           } else {
               isNotHTTP = true;
  +            jmsAddressPropVals = jmsaddress.getJMSPropertyValues();
           }
   
           if (url == null && !isNotHTTP)
  @@ -222,6 +225,13 @@
                   throw new WSIFException("missing input message for operation " + 
s3);
               wsifoperation_apacheaxis =
                   new WSIFOperation_ApacheAxis(this, operation, wsifdynamictypemap);
  +
  +            if (jmsAddressPropVals!=null && jmsAddressPropVals.size()>0) {
  +                if (transportcode==JMS_TRANSPORT)
  +                    
wsifoperation_apacheaxis.addInputJmsPropertyValues(jmsAddressPropVals);
  +                else throw new WSIFException("jms:propertyValue found in non-jms 
address");
  +            }
  +                
               BindingOperation bindingoperation =
                   binding.getBindingOperation(
                       s3,
  @@ -229,7 +239,7 @@
                       output == null ? null : output.getName());
               if (bindingoperation == null)
                   throw new WSIFException(
  -                    "mising required in WSDL 1.1 binding operation for " + s3);
  +                    "missing required in WSDL 1.1 binding operation for " + s3);
               SOAPOperation soapoperation =
                   (SOAPOperation) getExtElem(bindingoperation,
                       javax.wsdl.extensions.soap.SOAPOperation.class,
  @@ -288,6 +298,14 @@
                       throw new WSIFException("jms:properties found in non-jms 
binding");
               }
   
  +            List inJmsPropVals = 
  +                getExtElems(bindinginput, JMSPropertyValue.class, 
bindinginput.getExtensibilityElements());
  +            if (inJmsPropVals!=null && inJmsPropVals.size()>0) {
  +                if (st instanceof WSIFJmsTransport) 
  +                    
wsifoperation_apacheaxis.addInputJmsPropertyValues(inJmsPropVals);
  +                else throw new WSIFException("jms:propertyValue found in non-jms 
binding");
  +            }
  +
               BindingOutput bindingoutput = bindingoperation.getBindingOutput();
               if (bindingoutput != null) {
                   SOAPBody soapbody1 =
  @@ -483,6 +501,7 @@
               buff += " url:" + url;
               buff += " transportcode:" + transportcode;
               buff += " st:" + st;
  +            buff += " jmsAddressPropVals:" + jmsAddressPropVals;
           } catch (Exception e) {
               Tr.exceptionInTrace(e);
           }
  
  
  
  1.2       +179 -78   xml-axis-wsif/java/test/jms/JmsTest.java
  
  Index: JmsTest.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/test/jms/JmsTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JmsTest.java      6 Jun 2002 08:28:57 -0000       1.1
  +++ JmsTest.java      10 Jun 2002 17:03:54 -0000      1.2
  @@ -60,6 +60,7 @@
   import java.rmi.RemoteException;
   
   import javax.jms.DeliveryMode;
  +import javax.wsdl.QName;
   import junit.framework.Test;
   import junit.framework.TestCase;
   import junit.framework.TestSuite;
  @@ -98,30 +99,43 @@
       private final static String REPLYTOQ = "AddressBookReplyTo";
       private final static int PERS = DeliveryMode.PERSISTENT;
       private final static int NPERS = DeliveryMode.NON_PERSISTENT;
  +    private final static String  UP       = "user properties";
  +    private final static String  APV      = "address property values";
  +    private final static String  BPV      = "binding property values";
  +    private final static String  ABPV     = "address and binding property values";
  +    private final static String  UPV      = "user properties values";
  +    private final static String  OPV      = "overiding property values";
   
       private interface AddressBookWithAttrs extends AddressBook {
  -        public Address getAddressFromName(String name) throws RemoteException;
  -        public void addEntry(String wholeName, Address address) throws 
RemoteException;
  -        public void addEntry(String firstName, String lastName, Address address)
  -            throws RemoteException;
  -
  -        public Address getAddressFromName(String name, int deliveryMode)
  +        public void addEntry(String name, Address address) throws RemoteException;
  +        public void addEntry(String name, Address address, int deliveryMode)
               throws RemoteException;
  -
           public void addEntry(
  -            String wholeName,
  +            String name,
               Address address,
               int priority,
               String replyTo,
               int deliveryMode,
               long timeToLive)
               throws RemoteException;
  -
  +    
           public void addEntry(
  -            String firstName,
  -            String lastName,
  +            String name,
               Address address,
  -            int deliveryMode)
  +            int deliveryMode,
  +            boolean boolUp,
  +            byte byteUp,
  +            short shUp,
  +            int intUp,
  +            long loUp,
  +            float flUp,
  +            double doUp,
  +            String strUp,
  +            Object obj)
  +            throws RemoteException;
  +    
  +        public Address getAddressFromName(String name) throws RemoteException;
  +        public Address getAddressFromName(String name, int deliveryMode)
               throws RemoteException;
       }
   
  @@ -142,255 +156,292 @@
       }
   
       public void testSoapDefault() {
  -        doit("default", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("default", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapDefaultAlt() {
  -        doit("default-alt", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("default-alt", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadQcfMixQ() {
  -        doit("bad-qcfmixq", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-qcfmixq", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadMixQ() {
  -        doit("bad-mixq", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-mixq", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadMixIcf() {
  -        doit("bad-mixicf", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-mixicf", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadQcf() {
  -        doit("bad-qcf", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-qcf", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadQ() {
  -        doit("bad-queue", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-queue", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadAltQ() {
  -        doit("bad-altqueue", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-altqueue", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadStyle() {
  -        doit("bad-style", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-style", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadIcf() {
  -        doit("bad-icf", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-icf", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadJurl() {
  -        doit("bad-jurl", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-jurl", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadNoQ() {
  -        doit("bad-noq", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-noq", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadNoStyle() {
  -        doit("bad-nostyle", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-nostyle", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadNoQcf() {
  -        doit("bad-noqcf", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-noqcf", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadNoIcfJurl() {
  -        doit("bad-noicfjurl", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-noicfjurl", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadAltAndQ() {
  -        doit("bad-altandq", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-altandq", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadTopic() {
  -        doit("bad-topic", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-topic", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadImplSpec() {
  -        doit("bad-implspec", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-implspec", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadMqAndJndi() {
  -        doit("bad-mqandjndi", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-mqandjndi", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadNothing() {
  -        doit("bad-nothing", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-nothing", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapBadNoBinding() {
  -        doit("bad-nobinding", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-nobinding", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapHttpNoAttrs() {
  -        doit("http-noattrs", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("http-noattrs", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
       public void testSoapNullReplyTo() {
  -        doit("default", SOAP, null, 3, NPERS, 0);
  +        doit("default", SOAP, null, 3, NPERS, 0, null);
       }
   
       public void testSoapShortReplyTo() {
  -        doit("default", SOAP, "", 3, NPERS, 0);
  +        doit("default", SOAP, "", 3, NPERS, 0, null);
       }
   
       public void testSoapBadReplyTo() {
  -        doit("baddefault", SOAP, "trash", 3, NPERS, 0);
  +        doit("baddefault", SOAP, "trash", 3, NPERS, 0, null);
       }
       
       public void testSoapZeroPriority() {
  -        doit("default", SOAP, REPLYTOQ, 0, NPERS, 0);
  +        doit("default", SOAP, REPLYTOQ, 0, NPERS, 0, null);
       }
       
       public void testSoapNegPriority() {
  -        doit("baddefault", SOAP, REPLYTOQ, -1, NPERS, 0);
  +        doit("baddefault", SOAP, REPLYTOQ, -1, NPERS, 0, null);
       }
       
       public void testSoapBigPriority() {
  -        doit("baddefault", SOAP, REPLYTOQ, 57, NPERS, 0);
  +        doit("baddefault", SOAP, REPLYTOQ, 57, NPERS, 0, null);
       }
       
       public void testSoapPersistent() {
  -        doit("default", SOAP, REPLYTOQ, 3, PERS, 0);
  +        doit("default", SOAP, REPLYTOQ, 3, PERS, 0, null);
       }
       
       public void testSoapBadPers() {
  -        doit("bad-persist", SOAP, REPLYTOQ, 3, PERS, 0);
  +        doit("bad-persist", SOAP, REPLYTOQ, 3, PERS, 0, null);
       }
       
       public void testSoapNonPers() {
  -        doit("nonpersist", SOAP, REPLYTOQ, 3, NPERS, 0);
  +        doit("nonpersist", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
   
  -    public void testAxisDefault() {
  -        doit("default", AXIS, REPLYTOQ, 3, NPERS, 0);
  +    public void testSoapUserProp() {
  +        doit("default", SOAP, REPLYTOQ, 3, NPERS, 0, UP);
  +    }
  +    
  +    public void testSoapAddrPrVals() {
  +        doit("addrpv", SOAP, REPLYTOQ, 3, PERS, 0, APV);
       }
       
  +    public void testSoapBindPrVals() {
  +        doit("bindpv", SOAP, REPLYTOQ, 3, PERS, 0, BPV);
  +    }
  +    
  +//    public void testSoapAdBiPrVals() {
  +//        doit("adbipv", SOAP, REPLYTOQ, 3, PERS, 0, ABPV);
  +//    }
  +//    public void testSoapOvAdBiPrVals() {
  +//        doit("ovpv", SOAP, REPLYTOQ, 3, PERS, 0, OPV);
  +//    }
  +//    public void testSoapUserPrVals() {
  +//        doit("userpv", SOAP, REPLYTOQ, 3, NPERS, 0, UPV);
  +//    }
  +//    public void testSoapBadPVNoName() {
  +//        doit("bad-pvnoname", SOAP, REPLYTOQ, 3, NPERS, 0, APV);
  +//    }
  +
  +    public void testAxisDefault() {
  +        doit("default", AXIS, REPLYTOQ, 3, NPERS, 0, null);
  +    }
  +
       public void testAxisDefaultAlt() {
  -        doit("default-alt", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("default-alt", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadQcfMixQ() {
  -        doit("bad-qcfmixq", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-qcfmixq", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadMixQ() {
  -        doit("bad-mixq", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-mixq", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadMixIcf() {
  -        doit("bad-mixicf", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-mixicf", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadQcf() {
  -        doit("bad-qcf", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-qcf", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadQ() {
  -        doit("bad-queue", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-queue", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadAltQ() {
  -        doit("bad-altqueue", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-altqueue", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadStyle() {
  -        doit("bad-style", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-style", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadIcf() {
  -        doit("bad-icf", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-icf", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadJurl() {
  -        doit("bad-jurl", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-jurl", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadNoQ() {
  -        doit("bad-noq", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-noq", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadNoStyle() {
  -        doit("bad-nostyle", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-nostyle", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadNoQcf() {
  -        doit("bad-noqcf", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-noqcf", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadNoIcfJurl() {
  -        doit("bad-noicfjurl", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-noicfjurl", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadAltAndQ() {
  -        doit("bad-altandq", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-altandq", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadTopic() {
  -        doit("bad-topic", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-topic", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadImplSpec() {
  -        doit("bad-implspec", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-implspec", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadMqAndJndi() {
  -        doit("bad-mqandjndi", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-mqandjndi", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadNothing() {
  -        doit("bad-nothing", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-nothing", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisBadNoBinding() {
  -        doit("bad-nobinding", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("bad-nobinding", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisHttpNoAttrs() {
  -        doit("http-noattrs", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("http-noattrs", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
       
       public void testAxisNullReplyTo() {
  -        doit("default", AXIS, null, 3, NPERS, 0);
  +        doit("default", AXIS, null, 3, NPERS, 0, null);
       }
       
       public void testAxisShortReplyTo() {
  -        doit("default", AXIS, "", 3, NPERS, 0);
  +        doit("default", AXIS, "", 3, NPERS, 0, null);
       }
       
       public void testAxisBadReplyTo() {
  -        doit("baddefault", AXIS, "trash", 3, NPERS, 0);
  +        doit("baddefault", AXIS, "trash", 3, NPERS, 0, null);
       }
       
       public void testAxisZeroPriority() {
  -        doit("default", AXIS, REPLYTOQ, 0, NPERS, 0);
  +        doit("default", AXIS, REPLYTOQ, 0, NPERS, 0, null);
       }
       
       public void testAxisNegPriority() {
  -        doit("baddefault", AXIS, REPLYTOQ, -1, NPERS, 0);
  +        doit("baddefault", AXIS, REPLYTOQ, -1, NPERS, 0, null);
       }
       
       public void testAxisBigPriority() {
  -        doit("baddefault", AXIS, REPLYTOQ, 57, NPERS, 0);
  +        doit("baddefault", AXIS, REPLYTOQ, 57, NPERS, 0, null);
       }
       
       public void testAxisPersistent() {
  -        doit("default", AXIS, REPLYTOQ, 3, PERS, 0);
  +        doit("default", AXIS, REPLYTOQ, 3, PERS, 0, null);
       }
       
       public void testAxisBadPers() {
  -        doit("bad-persist", AXIS, REPLYTOQ, 3, PERS, 0);
  +        doit("bad-persist", AXIS, REPLYTOQ, 3, PERS, 0, null);
       }
       
       public void testAxisNonPers() {
  -        doit("nonpersist", AXIS, REPLYTOQ, 3, NPERS, 0);
  +        doit("nonpersist", AXIS, REPLYTOQ, 3, NPERS, 0, null);
  +    }
  +
  +    public void testAxisUserProp() {
  +        doit("default", AXIS, REPLYTOQ, 3, NPERS, 0, UP);
  +    }
  +
  +    public void testAxisAddrPrVals() {
  +        doit("addrpv", AXIS, REPLYTOQ, 3, PERS, 0, APV);
  +    }
  +
  +    public void testAxisBindPrVals() {
  +        doit("bindpv", AXIS, REPLYTOQ, 3, PERS, 0, BPV);
       }
   
       public void testJavaNoAttrs() {
  -        doit("java-noattrs", JAVA, null, 3, NPERS, 0);
  +        doit("java-noattrs", JAVA, null, 3, NPERS, 0, null);
       }
   
       private void doit(
  @@ -399,7 +450,8 @@
           String replyTo,
           int priority,
           int deliveryMode,
  -        long timeToLive) {
  +        long timeToLive,
  +        String cmd) {
           if (!TestUtilities.areWeTesting("jms"))
               return;
   
  @@ -421,10 +473,23 @@
                       "http://wsifservice.addressbook/";,
                       "AddressBook");
   
  +            service.mapType(
  +                new QName("http://www.ibm.com/namespace/wsif/samples/ab/types";, 
"integer"), 
  +                Integer.class);
  +
               AddressBookWithAttrs stub =
                   (AddressBookWithAttrs) service.getStub(portName, 
AddressBookWithAttrs.class);
   
  -            stub.addEntry(name, addr, priority, replyTo, deliveryMode, timeToLive);
  +            if (cmd == null)
  +                stub.addEntry(
  +                    name,
  +                    addr,
  +                    priority,
  +                    replyTo,
  +                    deliveryMode,
  +                    timeToLive);
  +            else
  +                doProperties(stub, cmd, deliveryMode);
   
               Address resp = stub.getAddressFromName(name, deliveryMode);
               assertTrue(new AddressUtility(resp).equals(addr));
  @@ -441,5 +506,41 @@
                       null);
               }
           }
  +    }
  +
  +    private void doProperties(
  +        AddressBookWithAttrs stub,
  +        String cmd,
  +        int deliveryMode)
  +        throws Exception {
  +
  +        if (UP.equals(cmd)) {
  +            byte b = 52;
  +            short s = 53;
  +            int i = 54;
  +            long l = 55;
  +            float f = 56.57F;
  +            double d = 58.59D;
  +            stub.addEntry(
  +                name,
  +                addr,
  +                deliveryMode,
  +                true,
  +                b,
  +                s,
  +                i,
  +                l,
  +                f,
  +                d,
  +                "60 through 67",
  +                new Integer(68));
  +        } else if (
  +            APV.equals(cmd)
  +                || BPV.equals(cmd)
  +                || ABPV.equals(cmd)
  +                || UPV.equals(cmd)) {
  +            stub.addEntry(name, addr, deliveryMode);
  +        } else
  +            assertTrue(false);
       }
   }
  
  
  
  1.2       +212 -51   xml-axis-wsif/java/test/jms/Jms.wsdl
  
  Index: Jms.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/test/jms/Jms.wsdl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Jms.wsdl  6 Jun 2002 08:28:57 -0000       1.1
  +++ Jms.wsdl  10 Jun 2002 17:03:54 -0000      1.2
  @@ -1,8 +1,8 @@
   <?xml version="1.0" ?>
   
  -<definitions targetNamespace="http://wsifservice.addressbook/";
  -             xmlns:tns="http://wsifservice.addressbook/";
  -             xmlns:typens="http://wsiftypes.addressbook/";
  +<definitions targetNamespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +             xmlns:tns="http://www.ibm.com/namespace/wsif/samples/ab";
  +             xmlns:typens="http://www.ibm.com/namespace/wsif/samples/ab/types";
                xmlns:xsd="http://www.w3.org/1999/XMLSchema";
                xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
                xmlns:jms="http://schemas.xmlsoap.org/wsdl/jms";
  @@ -13,7 +13,7 @@
     <!-- type defs -->
     <types>
       <xsd:schema
  -      targetNamespace="http://wsiftypes.addressbook/";
  +      targetNamespace="http://www.ibm.com/namespace/wsif/samples/ab/types";
                   xmlns:xsd="http://www.w3.org/1999/XMLSchema";>
         <xsd:complexType name="phone">
           <xsd:element name="areaCode" type="xsd:int"/>
  @@ -33,7 +33,16 @@
     </types>
   
     <!-- message declns -->
  -  <message name="AddEntryWholeNameRequestMessage">
  +  <message name="AddEntryRequestMessage">
  +    <part name="name" type="xsd:string"/>
  +    <part name="address" type="typens:address"/>
  +    <part name="requestDeliveryMode" type="xsd:int"/>
  +  </message>
  +
  +  <message name="AddEntryResponseMessage">
  +  </message>
  +
  +  <message name="AddEntryJmsPropRequestMessage">
       <part name="name" type="xsd:string"/>
       <part name="address" type="typens:address"/>
       <part name="requestPriority" type="xsd:int"/>
  @@ -42,17 +51,25 @@
       <part name="requestTimeToLive" type="xsd:long"/>
     </message>
   
  -  <message name="AddEntryWholeNameResponseMessage">
  +  <message name="AddEntryJmsPropResponseMessage">
     </message>
   
  -  <message name="AddEntryFirstAndLastNamesRequestMessage">
  -    <part name="firstName" type="xsd:string"/>
  -    <part name="lastName" type="xsd:string"/>
  -    <part name="address" type="typens:address"/>
  +  <message name="AddEntryUserPropRequestMessage">
  +    <part name="name"                type="xsd:string"/>
  +    <part name="address"             type="typens:address"/>
       <part name="requestDeliveryMode" type="xsd:int"/>
  +    <part name="requestUPBoolean"    type="xsd:boolean"/>
  +    <part name="requestUPByte"       type="xsd:byte"/>
  +    <part name="requestUPShort"      type="xsd:short"/>
  +    <part name="requestUPInt"        type="xsd:int"/>
  +    <part name="requestUPLong"       type="xsd:long"/>
  +    <part name="requestUPFloat"      type="xsd:float"/>
  +    <part name="requestUPDouble"     type="xsd:double"/>
  +    <part name="requestUPString"     type="xsd:string"/>
  +    <part name="requestUPObject"     type="typens:integer"/>
     </message>
   
  -  <message name="AddEntryFirstAndLastNamesResponseMessage">
  +  <message name="AddEntryUserPropResponseMessage">
     </message>
   
     <message name="GetAddressFromNameRequestMessage">
  @@ -67,12 +84,16 @@
     <!-- port type declns -->
     <portType name="AddressBook">
       <operation name="addEntry">
  -      <input name="AddEntryWholeNameRequest" 
message="tns:AddEntryWholeNameRequestMessage"/>
  -      <output name="AddEntryWholeNameResponse" 
message="tns:AddEntryWholeNameResponseMessage"/>
  +      <input name="AddEntryRequest" message="tns:AddEntryRequestMessage"/>
  +      <output name="AddEntryResponse" message="tns:AddEntryResponseMessage"/>
  +    </operation>
  +    <operation name="addEntry">
  +      <input name="AddEntryJmsPropRequest" 
message="tns:AddEntryJmsPropRequestMessage"/>
  +      <output name="AddEntryJmsPropResponse" 
message="tns:AddEntryJmsPropResponseMessage"/>
       </operation>
       <operation name="addEntry">
  -      <input name="AddEntryFirstAndLastNamesRequest" 
message="tns:AddEntryFirstAndLastNamesRequestMessage"/>
  -      <output name="AddEntryFirstAndLastNamesResponse" 
message="tns:AddEntryFirstAndLastNamesResponseMessage"/>
  +      <input name="AddEntryUserPropRequest" 
message="tns:AddEntryUserPropRequestMessage"/>
  +      <output name="AddEntryUserPropResponse" 
message="tns:AddEntryUserPropResponseMessage"/>
       </operation>
       <operation name="getAddressFromName">
         <input name="GetAddressFromNameRequest" 
message="tns:GetAddressFromNameRequestMessage"/>
  @@ -85,29 +106,43 @@
                     transport="http://schemas.xmlsoap.org/soap/http"/>
       <operation name="addEntry">
         <soap:operation soapAction=""/>
  -      <input name="AddEntryWholeNameRequest">
  +      <input name="AddEntryRequest">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
                      parts="name address" /> 
         </input>
  -      <output name="AddEntryWholeNameResponse">
  +      <output name="AddEntryResponse">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; /> 
         </output>
       </operation>
       <operation name="addEntry">
         <soap:operation soapAction=""/>
  -      <input name="AddEntryFirstAndLastNamesRequest">
  +      <input name="AddEntryJmsPropRequest">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  -                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
  -                   parts="firstName lastName address" />
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
  +                   parts="name address" /> 
         </input>
  -      <output name="AddEntryFirstAndLastNamesResponse">
  +      <output name="AddEntryJmsPropResponse">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; /> 
  +      </output>
  +    </operation>
  +    <operation name="addEntry">
  +      <soap:operation soapAction=""/>
  +      <input name="AddEntryUserPropRequest">
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
  +                   parts="name address" /> 
  +      </input>
  +      <output name="AddEntryUserPropResponse">
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
         </output>
       </operation>
  @@ -115,13 +150,13 @@
         <soap:operation soapAction=""/>
         <input name="GetAddressFromNameRequest">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
                      parts="name" />
         </input>
         <output name="GetAddressFromNameResponse">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
         </output>
       </operation>
  @@ -130,7 +165,7 @@
     <binding name="JavaBinding" type="tns:AddressBook">
       <java:binding/>
       <format:typeMapping encoding="Java" style="Java">
  -      <format:typeMap typeName="typens:address" 
formatType="addressbook.wsiftypes.Address" />
  +      <format:typeMap typeName="typens:address" 
formatType="com.ibm.www.namespace.wsif.samples.ab.types.Address" />
         <format:typeMap typeName="xsd:string" formatType="java.lang.String" />
       </format:typeMapping>
       <operation name="addEntry">
  @@ -138,16 +173,8 @@
            methodName="addEntry"
            parameterOrder="name address"
            methodType="instance" />
  -      <input name="AddEntryWholeNameRequest"/>
  -      <output name="AddEntryWholeNameResponse"/>
  -    </operation>
  -    <operation name="addEntry">
  -      <java:operation
  -         methodName="addEntry"
  -         parameterOrder="firstName lastName address"
  -         methodType="instance" />
  -      <input name="AddEntryFirstAndLastNamesRequest"/>
  -      <output name="AddEntryFirstAndLastNamesResponse"/>
  +      <input name="AddEntryJmsPropRequest"/>
  +      <output name="AddEntryJmsPropResponse"/>
       </operation>
       <operation name="getAddressFromName">
         <java:operation
  @@ -165,46 +192,144 @@
                     transport="http://schemas.xmlsoap.org/soap/jms"/>
       <operation name="addEntry">
         <soap:operation soapAction=""/>
  -      <input name="AddEntryWholeNameRequest">
  +      <input name="AddEntryRequest">
  +        <jms:property name="JMSDeliveryMode" part="requestDeliveryMode" />
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </input>
  +      <output name="AddEntryResponse">
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </output>
  +    </operation>
  +    <operation name="addEntry">
  +      <soap:operation soapAction=""/>
  +      <input name="AddEntryJmsPropRequest">
           <jms:property name="JMSPriority"     part="requestPriority" />
           <jms:property name="JMSReplyTo"      part="requestReplyTo"  />
           <jms:property name="JMSDeliveryMode" part="requestDeliveryMode" />
           <jms:property name="JMSTimeToLive"   part="requestTimeToLive" />
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
         </input>
  -      <output name="AddEntryWholeNameResponse">
  +      <output name="AddEntryJmsPropResponse">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
         </output>
       </operation>
       <operation name="addEntry">
         <soap:operation soapAction=""/>
  -      <input name="AddEntryFirstAndLastNamesRequest">
  +      <input name="AddEntryUserPropRequest">
  +        <jms:property name="JMSDeliveryMode"   part="requestDeliveryMode" />
  +        <jms:property name="MyBooleanProperty" part="requestUPBoolean" />
  +        <jms:property name="MyByteProperty"    part="requestUPByte" />
  +        <jms:property name="MyShortProperty"   part="requestUPShort" />
  +        <jms:property name="MyIntProperty"     part="requestUPInt" />
  +        <jms:property name="MyLongProperty"    part="requestUPLong" />
  +        <jms:property name="MyFloatProperty"   part="requestUPFloat" />
  +        <jms:property name="MyDoubleProperty"  part="requestUPDouble" />
  +        <jms:property name="MyStringProperty"  part="requestUPString" />
  +        <jms:property name="MyObjectProperty"  part="requestUPObject" />
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </input>
  +      <output name="AddEntryUserPropResponse">
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </output>
  +    </operation>
  +    <operation name="getAddressFromName">
  +      <soap:operation soapAction=""/>
  +      <input name="GetAddressFromNameRequest">
           <jms:property name="JMSDeliveryMode" part="requestDeliveryMode" />
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
         </input>
  -      <output name="AddEntryFirstAndLastNamesResponse">
  +      <output name="GetAddressFromNameResponse">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
         </output>
       </operation>
  +  </binding>
  +
  +  <binding name="BindPV" type="tns:AddressBook">
  +    <soap:binding style="rpc"
  +                  transport="http://schemas.xmlsoap.org/soap/jms"/>
  +    <operation name="addEntry">
  +      <soap:operation soapAction=""/>
  +      <input name="AddEntryRequest">
  +        <jms:property name="JMSDeliveryMode" part="requestDeliveryMode" />
  +        <jms:propertyValue name="JMSReplyTo" type="xsd:string" 
value="AddressBookReplyTo"/>
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </input>
  +      <output name="AddEntryResponse">
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </output>
  +    </operation>
  +    <operation name="addEntry">
  +      <soap:operation soapAction=""/>
  +      <input name="AddEntryJmsPropRequest">
  +        <jms:property name="JMSPriority"     part="requestPriority" />
  +        <jms:property name="JMSReplyTo"      part="requestReplyTo"  />
  +        <jms:property name="JMSDeliveryMode" part="requestDeliveryMode" />
  +        <jms:property name="JMSTimeToLive"   part="requestTimeToLive" />
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </input>
  +      <output name="AddEntryJmsPropResponse">
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </output>
  +    </operation>
  +    <operation name="addEntry">
  +      <soap:operation soapAction=""/>
  +      <input name="AddEntryUserPropRequest">
  +        <jms:property name="JMSDeliveryMode"   part="requestDeliveryMode" />
  +        <jms:property name="MyBooleanProperty" part="requestUPBoolean" />
  +        <jms:property name="MyByteProperty"    part="requestUPByte" />
  +        <jms:property name="MyShortProperty"   part="requestUPShort" />
  +        <jms:property name="MyIntProperty"     part="requestUPInt" />
  +        <jms:property name="MyLongProperty"    part="requestUPLong" />
  +        <jms:property name="MyFloatProperty"   part="requestUPFloat" />
  +        <jms:property name="MyDoubleProperty"  part="requestUPDouble" />
  +        <jms:property name="MyStringProperty"  part="requestUPString" />
  +        <jms:property name="MyObjectProperty"  part="requestUPObject" />
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </input>
  +      <output name="AddEntryUserPropResponse">
  +        <soap:body use="encoded"
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
  +                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
  +      </output>
  +    </operation>
       <operation name="getAddressFromName">
         <soap:operation soapAction=""/>
         <input name="GetAddressFromNameRequest">
           <jms:property name="JMSDeliveryMode" part="requestDeliveryMode" />
  +        <jms:propertyValue name="JMSReplyTo" type="xsd:string" 
value="AddressBookReplyTo"/>
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
         </input>
         <output name="GetAddressFromNameResponse">
           <soap:body use="encoded"
  -                   namespace="http://wsifservice.addressbook/";
  +                   namespace="http://www.ibm.com/namespace/wsif/samples/ab";
                      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
         </output>
       </operation>
  @@ -254,7 +379,7 @@
         <jms:address jndiDestinationName="SoapJmsAddressBookQueue"
                      destinationStyle="queue"
                      jndiConnectionFactoryName="WSIFSampleQCF"
  -                   initialContextFactory="org.apache.wsif.test.WSIFTestRunner"
  +                   initialContextFactory="com.ibm.wsif.test.WSIFTestRunner"
                      jndiProviderURL="file://C:/JNDI-Directory"/>
       </port>
       <port name="bad-qcf" binding="tns:SOAPJmsBinding">
  @@ -369,7 +494,7 @@
         <soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
       </port>
       <port name="java-noattrs" binding="tns:JavaBinding">
  -      <java:address className="addressbook.wsiftypes.AddressBook"/>
  +      <java:address className="services.addressbook.AddressBook"/>
       </port>
       <port name="bad-persist" binding="tns:SOAPJmsBinding">
         <jms:address jmsVendorURI="http://ibm.com/ns/mqseries";
  @@ -387,6 +512,42 @@
                      
initialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
                      jndiProviderURL="file://C:/JNDI-Directory"/>
       </port>
  +    <port name="addrpv" binding="tns:SOAPJmsBinding">
  +      <jms:address jndiDestinationName="SoapJmsAddressBookQueue"
  +                   destinationStyle="queue"
  +                   jndiConnectionFactoryName="TempQCF"
  +                   
initialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
  +                   jndiProviderURL="file://C:/JNDI-Directory">
  +        <jms:propertyValue name="JMSReplyTo" type="xsd:string" 
value="AddressBookReplyTo"/>
  +      </jms:address>
  +    </port>
  +    <port name="bindpv" binding="tns:BindPV">
  +      <jms:address jndiDestinationName="SoapJmsAddressBookQueue"
  +                   destinationStyle="queue"
  +                   jndiConnectionFactoryName="TempQCF"
  +                   
initialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
  +                   jndiProviderURL="file://C:/JNDI-Directory">
  +      </jms:address>
  +    </port>
  +    <port name="adbipv" binding="tns:BindPV">
  +      <jms:address jndiDestinationName="SoapJmsAddressBookQueue"
  +                   destinationStyle="queue"
  +                   jndiConnectionFactoryName="TempQCF"
  +                   
initialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
  +                   jndiProviderURL="file://C:/JNDI-Directory">
  +        <jms:propertyValue name="JMSReplyTo" type="xsd:string" value="trash"/>
  +      </jms:address>
  +    </port>
  +    <port name="ovpv" binding="tns:SOAPJmsBinding">
  +      <jms:address jndiDestinationName="SoapJmsAddressBookQueue"
  +                   destinationStyle="queue"
  +                   jndiConnectionFactoryName="TempQCF"
  +                   
initialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
  +                   jndiProviderURL="file://C:/JNDI-Directory">
  +        <jms:propertyValue name="JMSReplyTo" type="xsd:string" value="trash"/>
  +      </jms:address>
  +    </port>
     </service>
   
  -</definitions>
  \ No newline at end of file
  +</definitions>
  +
  
  
  


Reply via email to