antelder    2002/10/15 02:22:58

  Modified:    java/src/org/apache/wsif/util/jms WSIFJMSDestination.java
               java/src/org/apache/wsif/providers/jms
                        WSIFOperation_Jms.java
  Log:
  Enhance JMS operations to allow timouts to be specified for each operation request
  
  Revision  Changes    Path
  1.12      +25 -1     
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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- WSIFJMSDestination.java   10 Oct 2002 14:51:44 -0000      1.11
  +++ WSIFJMSDestination.java   15 Oct 2002 09:22:57 -0000      1.12
  @@ -341,7 +341,18 @@
        */
       public String receiveString(String id) throws WSIFException {
           Trc.entry(this, id);
  -        Message msg = receive(id);
  +        String s = receiveString( id, timeout );
  +        Trc.exit(s);
  +        return s;
  +    }
  +
  +    /**
  +     * Blocking receive waits for the specified timeout
  +     * @return the received message
  +     */
  +    public String receiveString(String id, long timeout) throws WSIFException {
  +        Trc.entry(this, id);
  +        Message msg = receive(id, timeout);
           String s = null;
           try {
               if (msg instanceof TextMessage)
  @@ -364,6 +375,19 @@
        * @return the received message
        */
       public Message receive(String id) throws WSIFException {
  +        Trc.entry(this, id);
  +        Message msg = receive(id, timeout);
  +        Trc.exit(msg);
  +        return msg;
  +    }
  +
  +    /**
  +     * Blocking receive waits for a message for the specified timeout
  +     * @param id is the correlation id that the received message must have
  +     * @param timeout how long in milliseconds to wait
  +     * @return the received message
  +     */
  +    public Message receive(String id, long timeout) throws WSIFException {
           Trc.entry(this, id);
           areWeClosed();
           QueueReceiver rec = null;
  
  
  
  1.33      +55 -18    
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.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- WSIFOperation_Jms.java    15 Oct 2002 09:12:55 -0000      1.32
  +++ WSIFOperation_Jms.java    15 Oct 2002 09:22:57 -0000      1.33
  @@ -137,7 +137,9 @@
        private WSIFResponseHandler handler;
        private boolean asyncOperation;
        private JMSFormatter formatter;
  -     private static final long ASYNC_TIMEOUT = WSIFProperties.getAsyncTimeout();
  +
  +     private long syncTimeout;
  +     private long asyncTimeout;
        transient private WSIFJMSDestination jmsDest;
   
        /**
  @@ -157,6 +159,9 @@
                fieldJmsPort = jmsPort;
                this.jmsDest = jmsDest;
   
  +             syncTimeout = WSIFProperties.getSyncTimeout();
  +             asyncTimeout = WSIFProperties.getAsyncTimeout();
  +
                if (Trc.ON)
                        Trc.exit(deep());
        }
  @@ -205,7 +210,7 @@
                        // send the jms message   
                        String correlId = sendJmsMessage(input);
   
  -                     javax.jms.Message response = jmsDest.receive(correlId);
  +                     javax.jms.Message response = jmsDest.receive(correlId, 
syncTimeout);
                        operationSucceeded = receiveJmsMessage(response, output, 
fault);
   
                } catch (Exception ex) {
  @@ -302,7 +307,7 @@
                                                correlId =
                                                        new 
WSIFJMSCorrelationId(sendJmsMessage(input));
                                                //register it to the correlation 
service
  -                                             cs.put(correlId, this, ASYNC_TIMEOUT);
  +                                             cs.put(correlId, this, asyncTimeout);
                                        }
                                }
                        }
  @@ -419,9 +424,11 @@
                for (Iterator i = input.getPartNames(); i.hasNext();) {
                        partName = (String) i.next();
                        if (propertyParts.containsKey(partName)) {
  -                             jmsDest.setProperty(
  -                                     (String) propertyParts.get(partName),
  -                                     input.getObjectPart(partName));
  +                             String name = (String) propertyParts.get(partName);
  +                             Object value = input.getObjectPart(partName);
  +                             if (!timeoutProperty(name, value)) {
  +                                     jmsDest.setProperty(name, value);
  +                             }
                        } else if (wsdlInputParts.contains(partName)) {
                                wsdlInputParts.remove(partName);
                                if (fieldInput == null) {
  @@ -687,7 +694,9 @@
                                JMSPropertyValue pv = (JMSPropertyValue) i.next();
                                if (pv != null) {
                                        Object o = getObjectValue(pv.getType(), 
pv.getValue());
  -                                     jmsDest.setProperty(pv.getName(), o);
  +                                     if (!timeoutProperty(pv.getName(), o)) {
  +                                             jmsDest.setProperty(pv.getName(), o);
  +                                     }
                                }
                        }
                }
  @@ -707,9 +716,34 @@
   
                        if (value != null) {
                                Object o = getObjectValue(value.getType(), 
value.getValue());
  -                             jmsDest.setProperty(attName, o);
  +                             if (!timeoutProperty(attName, o)) {
  +                                     jmsDest.setProperty(attName, o);
  +                             }
  +                     }
  +             }
  +     }
  +
  +     private boolean timeoutProperty(String propertyName, Object value) {
  +             boolean isTimeoutProperty = false;
  +             if (WSIFConstants.WSIF_PROP_SYNC_TIMEOUT.equals(propertyName)) {
  +                     isTimeoutProperty = true;
  +                     try {
  +                             syncTimeout = Long.parseLong(value.toString());
  +                             Trc.event(this, "overridding syncTimeout to " + 
syncTimeout);
  +                     } catch (NumberFormatException ex) {
  +                             Trc.ignoredException(ex);
  +                     }
  +             } else if (
  +                     WSIFConstants.WSIF_PROP_ASYNC_TIMEOUT.equals(propertyName)) {
  +                     isTimeoutProperty = true;
  +                     try {
  +                             asyncTimeout = Long.parseLong(value.toString());
  +                             Trc.event(this, "overridding asyncTimeout to " + 
syncTimeout);
  +                     } catch (NumberFormatException ex) {
  +                             Trc.ignoredException(ex);
                        }
                }
  +             return isTimeoutProperty;
        }
   
        /**
  @@ -905,19 +939,22 @@
                if (context == null || jmsDest == null) {
                        return;
                }
  -             String partName;
                HashMap jmsProps = new HashMap();
                for (Iterator i = context.getPartNames(); i.hasNext();) {
  -                     partName = (String) i.next();
  -                     if (partName.startsWith(WSIFConstants.CONTEXT_JMS_PREFIX)) {
  -                             try {
  -                                     jmsProps.put(
  -                                             partName.substring(
  -                                                     
WSIFConstants.CONTEXT_JMS_PREFIX.length()),
  -                                             context.getObjectPart(partName));
  -                             } catch (WSIFException ex) {
  -                                     Trc.ignoredException(ex);
  +                     String partName = (String) i.next();
  +                     try {
  +                             Object value = context.getObjectPart(partName);
  +                             if (!timeoutProperty(partName, value)) {
  +                                     if (partName
  +                                             
.startsWith(WSIFConstants.CONTEXT_JMS_PREFIX)) {
  +                                             jmsProps.put(
  +                                                     partName.substring(
  +                                                             
WSIFConstants.CONTEXT_JMS_PREFIX.length()),
  +                                                     value);
  +                                     }
                                }
  +                     } catch (WSIFException ex) {
  +                             Trc.ignoredException(ex);
                        }
                }
                if (jmsProps.size() > 0) {
  
  
  


Reply via email to