antelder    2002/06/12 14:07:50

  Modified:    java/src/org/apache/wsif/providers/jms JMSMessage.java
                        WSIFOperation_Jms.java
                        PrimitiveTypeFormatHandler.java
  Log:
  Latest native JMS provider changes from Norman
  
  Revision  Changes    Path
  1.4       +13 -9     
xml-axis-wsif/java/src/org/apache/wsif/providers/jms/JMSMessage.java
  
  Index: JMSMessage.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/jms/JMSMessage.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JMSMessage.java   12 Jun 2002 10:27:23 -0000      1.3
  +++ JMSMessage.java   12 Jun 2002 21:07:50 -0000      1.4
  @@ -99,12 +99,12 @@
       private static String XML_ENCODING = "XML";
       private static String JAVA_ENCODING = "Java";
   
  -    private static String XML_SCHEMA_1999 = "http://www.w3.org/1999/XMLSchema";;
  -    private static String XML_SCHEMA_2000_10 =
  +    static String XML_SCHEMA_1999 = "http://www.w3.org/1999/XMLSchema";;
  +    static String XML_SCHEMA_2000_10 =
           "http://www.w3.org/2000/10/XMLSchema";;
  -    private static String XML_SCHEMA_2001 = "http://www.w3.org/2001/XMLSchema";;
  +    static String XML_SCHEMA_2001 = "http://www.w3.org/2001/XMLSchema";;
   
  -    private static final java.util.HashMap PRIMITIVE_JAVA_MAPPING =
  +    static final java.util.HashMap PRIMITIVE_JAVA_MAPPING =
           new java.util.HashMap();
   
       // Maps the XSD Type to the equivalent Java class
  @@ -666,14 +666,18 @@
           javax.wsdl.Part partModel = fieldMessageModel.getPart(partName);
           org.apache.wsif.format.jms.JMSFormatHandler fh = null;
   
  +             javax.wsdl.QName partType = partModel.getTypeName();
  +             if(partType == null)
  +                     partType = partModel.getElementName();
  +
           try {
               // no type exists or it is not a XSD primitive type
  -            if (isSchemaNamespace(partModel.getTypeName().getNamespaceURI())
  -                && isXSDPrimitiveType(partModel.getTypeName().getLocalPart()))
  +                     if (isSchemaNamespace(partType.getNamespaceURI())
  +                             && isXSDPrimitiveType(partType.getLocalPart())) 
                   fh =
                       new PrimitiveTypeFormatHandler(
                           (Class) PRIMITIVE_JAVA_MAPPING.get(
  -                            partModel.getTypeName().getLocalPart().toLowerCase()));
  +                                                 
partType.getLocalPart().toLowerCase()));
               else
                   fh = (org.apache.wsif.format.jms.JMSFormatHandler)
                       //antxxx                         
org.apache.wsif.jca.util.JCAUtil.getFormatHandler(
  @@ -690,13 +694,13 @@
       /**
        * Returns true if the namespace is one of the existing XML Schema namespaces
        */
  -    private boolean isSchemaNamespace(String namespaceURI) {
  +    static boolean isSchemaNamespace(String namespaceURI) {
           return XML_SCHEMA_1999.equals(namespaceURI)
               || XML_SCHEMA_2000_10.equals(namespaceURI)
               || XML_SCHEMA_2001.equals(namespaceURI);
       }
   
  -    private boolean isXSDPrimitiveType(String type) {
  +    static boolean isXSDPrimitiveType(String type) {
           Object[] types = PRIMITIVE_JAVA_MAPPING.keySet().toArray();
           for (int i = 0; i < types.length; i++) {
               if (types[i].toString().equalsIgnoreCase(type))
  
  
  
  1.3       +39 -8     
xml-axis-wsif/java/src/org/apache/wsif/providers/jms/WSIFOperation_Jms.java
  
  Index: WSIFOperation_Jms.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/jms/WSIFOperation_Jms.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WSIFOperation_Jms.java    12 Jun 2002 10:27:23 -0000      1.2
  +++ WSIFOperation_Jms.java    12 Jun 2002 21:07:50 -0000      1.3
  @@ -448,6 +448,9 @@
           WSIFJMSDestination jmsDest)
           throws WSIFException {
   
  +        if (!(responseObject instanceof javax.jms.Message))
  +                throw new WSIFException("Object is not of type javax.jms.Message");
  +
           JMSFormatter formatter = (JMSFormatter) fieldJmsPort.getFormatter();
           WSIFResponse resp =
               formatter.unformatResponse((javax.jms.Message) responseObject);
  @@ -580,15 +583,43 @@
           return fieldOperation;
       }
   
  -    private Object getObjectValue(QName type, String value) {
  -        //FIXME
  -        // Need to factor in property the type assigned
  -        if (type.equals(new QName("http://www.w3.org/2001/XMLSchema";, "string")))
  -            return value;
  -        else
  -            return null;
  -    }
  +     private Object getObjectValue(QName type, String value) throws WSIFException {
   
  +             Object primitiveType = null;
  +                     
  +             if (JMSMessage.isSchemaNamespace(type.getNamespaceURI()) && 
JMSMessage.isXSDPrimitiveType(type.getLocalPart())) {
  +                     Class cls = 
(Class)JMSMessage.PRIMITIVE_JAVA_MAPPING.get(type.getLocalPart().toLowerCase());    
  +                             
  +                     if (cls == String.class) {
  +                             primitiveType = value;
  +                     }
  +                     // For byte array class
  +                     else if (cls == byte[].class) {
  +                             primitiveType = value.getBytes();
  +                     }
  +                     // For Gregorian Calendar && Date
  +                     else if 
(java.util.GregorianCalendar.class.isAssignableFrom(cls) ||
  +                             java.util.Date.class.isAssignableFrom(cls)) {
  +                             // DON"T DO ANYTHING since unable to know what the 
format is
  +                     }
  +                     // For all the rest
  +                     else {
  +                             try {
  +                                     java.lang.reflect.Constructor constructor = 
cls.getConstructor(
  +                                             new Class[] {String.class});
  +                                     primitiveType = constructor.newInstance(new 
Object[] {value});
  +                             }
  +                             catch (Exception e) {
  +                             }
  +                     }
  +             }
  +             
  +             if (primitiveType != null)
  +                     return primitiveType;
  +             else
  +                     throw new WSIFException("Unable to create the java object for 
XSD Type '" + type.toString() + "' using value '" + value + "'"); 
  +     }
  +     
       //FIXME - Should I place somewhere else??
       public int getJMSMessageType() {
           Tr.entry(this);
  
  
  
  1.2       +8 -8      
xml-axis-wsif/java/src/org/apache/wsif/providers/jms/PrimitiveTypeFormatHandler.java
  
  Index: PrimitiveTypeFormatHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/jms/PrimitiveTypeFormatHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PrimitiveTypeFormatHandler.java   6 Jun 2002 08:28:51 -0000       1.1
  +++ PrimitiveTypeFormatHandler.java   12 Jun 2002 21:07:50 -0000      1.2
  @@ -74,11 +74,11 @@
   
   public class PrimitiveTypeFormatHandler implements JMSFormatHandler {
   
  -    protected static DateFormat gregorianCalandarDateFormat =
  +    protected static DateFormat GREGORIAN_CALENDAR_DATE_FORMAT =
           new SimpleDateFormat("yyyy-MM-dd");
  -    protected static DateFormat standardDateFormat =
  +    protected static DateFormat STANDARD_DATE_FORMAT =
           new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
  -    protected static DateFormat preciseDateFormat =
  +    protected static DateFormat PRECISE_DATE_FORMAT =
           new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'");
   
       Object primitiveType;
  @@ -270,10 +270,10 @@
               value = "";
           else if (primitiveType instanceof java.util.GregorianCalendar)
               value =
  -                gregorianCalandarDateFormat.format(
  +                GREGORIAN_CALENDAR_DATE_FORMAT.format(
                       ((java.util.GregorianCalendar) primitiveType).getTime());
           else if (primitiveType instanceof java.util.Date)
  -            value = standardDateFormat.format((java.util.Date) primitiveType);
  +            value = STANDARD_DATE_FORMAT.format((java.util.Date) primitiveType);
           else if (primitiveType instanceof byte[])
               value = new String((byte[]) primitiveType);
           else {
  @@ -305,16 +305,16 @@
               // For Gregorian Calendar
               else if (java.util.GregorianCalendar.class.isAssignableFrom(cls)) {
                   java.util.GregorianCalendar result = new 
java.util.GregorianCalendar();
  -                result.setTime(gregorianCalandarDateFormat.parse(value));
  +                result.setTime(GREGORIAN_CALENDAR_DATE_FORMAT.parse(value));
                   primitiveType = result;
               }
               // For Date
               else if (java.util.Date.class.isAssignableFrom(cls)) {
                   java.util.Date result = new java.util.Date();
                   try {
  -                    result = standardDateFormat.parse(value);
  +                    result = STANDARD_DATE_FORMAT.parse(value);
                   } catch (java.text.ParseException standardException) {
  -                    result = preciseDateFormat.parse(value);
  +                    result = PRECISE_DATE_FORMAT.parse(value);
                   }
                   primitiveType = result;
               }
  
  
  


Reply via email to