Author: robbie
Date: Wed Jul  2 15:20:13 2014
New Revision: 1607394

URL: http://svn.apache.org/r1607394
Log:
PROTON-474: update mapping of JMSExpiration <-> absolute-expiry-time/ttl in 
contrib/proton-jms transformers

Modified:
    
qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/InboundTransformer.java
    
qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java

Modified: 
qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/InboundTransformer.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/InboundTransformer.java?rev=1607394&r1=1607393&r2=1607394&view=diff
==============================================================================
--- 
qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/InboundTransformer.java
 (original)
+++ 
qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/InboundTransformer.java
 Wed Jul  2 15:20:13 2014
@@ -115,11 +115,6 @@ public abstract class InboundTransformer
         } else {
             jms.setJMSPriority(defaultPriority);
         }
-        if( header.getTtl()!=null ) {
-            jms.setJMSExpiration(header.getTtl().longValue());
-        } else {
-            jms.setJMSExpiration(defaultTtl);
-        }
         if( header.getFirstAcquirer() !=null ) {
             jms.setBooleanProperty(prefixVendor + "FirstAcquirer", 
header.getFirstAcquirer());
         }
@@ -209,6 +204,23 @@ public abstract class InboundTransformer
             if( properties.getReplyToGroupId()!=null ) {
                 jms.setStringProperty(prefixVendor + "ReplyToGroupID", 
properties.getReplyToGroupId());
             }
+            if( properties.getAbsoluteExpiryTime()!=null ) {
+                
jms.setJMSExpiration(properties.getAbsoluteExpiryTime().getTime());
+            }
+        }
+
+        // If the jms expiration has not yet been set...
+        if( jms.getJMSExpiration()==0 ) {
+            // Then lets try to set it based on the message ttl.
+            long ttl = defaultTtl;
+            if( header.getTtl()!=null ) {
+                ttl = header.getTtl().longValue();
+            }
+            if( ttl == 0 ) {
+              jms.setJMSExpiration(0);
+            } else {
+                jms.setJMSExpiration(System.currentTimeMillis()+ttl);
+            }
         }
 
         final Footer fp = amqp.getFooter();

Modified: 
qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java?rev=1607394&r1=1607393&r2=1607394&view=diff
==============================================================================
--- 
qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
 (original)
+++ 
qpid/proton/trunk/contrib/proton-jms/src/main/java/org/apache/qpid/proton/jms/JMSMappingOutboundTransformer.java
 Wed Jul  2 15:20:13 2014
@@ -121,9 +121,6 @@ public class JMSMappingOutboundTransform
 
         header.setDurable(msg.getJMSDeliveryMode() == DeliveryMode.PERSISTENT 
? true : false);
         header.setPriority(new UnsignedByte((byte) msg.getJMSPriority()));
-        if( msg.getJMSExpiration() != 0 ) {
-            header.setTtl(new UnsignedInteger((int) msg.getJMSExpiration()));
-        }
         if( msg.getJMSType()!=null ) {
             if( maMap==null ) maMap = new HashMap<Symbol, Object>();
             maMap.put(Symbol.valueOf("x-opt-jms-type"), msg.getJMSType());
@@ -145,6 +142,12 @@ public class JMSMappingOutboundTransform
             props.setCorrelationId(msg.getJMSCorrelationID());
         }
         if( msg.getJMSExpiration() != 0 ) {
+            long ttl = msg.getJMSExpiration() - System.currentTimeMillis();
+            if (ttl < 0) {
+                ttl = 1;
+            }
+            header.setTtl(new UnsignedInteger((int)ttl));
+
             props.setAbsoluteExpiryTime(new Date(msg.getJMSExpiration()));
         }
         if( msg.getJMSTimestamp()!= 0 ) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to