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> +