You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2006/01/05 11:44:55 UTC

svn commit: r366152 - in /incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra: ActiveMQConnectionRequestInfo.java ActiveMQManagedConnectionFactory.java ActiveMQResourceAdapter.java

Author: jstrachan
Date: Thu Jan  5 02:44:52 2006
New Revision: 366152

URL: http://svn.apache.org/viewcvs?rev=366152&view=rev
Log:
allow customisation of the redelivery policy and prefetch policy on the ActiveMQ ResourceAdapter and ActiveMQManagedConnectionFactory and fix AMQ-467

Modified:
    incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java
    incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnectionFactory.java
    incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQResourceAdapter.java

Modified: incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java?rev=366152&r1=366151&r2=366152&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java (original)
+++ incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java Thu Jan  5 02:44:52 2006
@@ -16,10 +16,12 @@
  */
 package org.apache.activemq.ra;
 
+import org.apache.activemq.ActiveMQPrefetchPolicy;
+import org.apache.activemq.RedeliveryPolicy;
+
 import javax.resource.spi.ConnectionRequestInfo;
 import java.io.Serializable;
 
-
 /**
  * @version $Revision$
  * 
@@ -34,17 +36,20 @@
     private String serverUrl;
     private String clientid;
     private Boolean useInboundSession;
+    private RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
+    private ActiveMQPrefetchPolicy prefetchPolicy = new ActiveMQPrefetchPolicy();
 
     public ActiveMQConnectionRequestInfo copy() {
         try {
-            return (ActiveMQConnectionRequestInfo) clone();
+            ActiveMQConnectionRequestInfo answer = (ActiveMQConnectionRequestInfo) clone();
+            answer.redeliveryPolicy = redeliveryPolicy.copy();
+            return answer;
         }
         catch (CloneNotSupportedException e) {
-            throw new RuntimeException("Could not clone: ", e);
+            throw new RuntimeException("Could not clone: " + e, e);
         }
     }
 
-
     /**
      * @see javax.resource.spi.ConnectionRequestInfo#hashCode()
      */
@@ -59,7 +64,6 @@
         return rc;
     }
 
-
     /**
      * @see javax.resource.spi.ConnectionRequestInfo#equals(java.lang.Object)
      */
@@ -71,16 +75,15 @@
             return false;
         }
         ActiveMQConnectionRequestInfo i = (ActiveMQConnectionRequestInfo) o;
-        if ( notEqual(serverUrl, i.serverUrl) ) {
+        if (notEqual(serverUrl, i.serverUrl)) {
             return false;
         }
-        if ( notEqual(useInboundSession, i.useInboundSession) ) {
+        if (notEqual(useInboundSession, i.useInboundSession)) {
             return false;
         }
         return true;
     }
 
-
     /**
      * @param i
      * @return
@@ -97,7 +100,8 @@
     }
 
     /**
-     * @param url The url to set.
+     * @param url
+     *            The url to set.
      */
     public void setServerUrl(String url) {
         this.serverUrl = url;
@@ -111,7 +115,8 @@
     }
 
     /**
-     * @param password The password to set.
+     * @param password
+     *            The password to set.
      */
     public void setPassword(String password) {
         this.password = password;
@@ -125,7 +130,8 @@
     }
 
     /**
-     * @param userid The userid to set.
+     * @param userid
+     *            The userid to set.
      */
     public void setUserName(String userid) {
         this.userName = userid;
@@ -139,34 +145,139 @@
     }
 
     /**
-     * @param clientid The clientid to set.
+     * @param clientid
+     *            The clientid to set.
      */
     public void setClientid(String clientid) {
         this.clientid = clientid;
     }
 
     public String toString() {
-        return "ActiveMQConnectionRequestInfo{ " +
-                "userName = '" + userName + "' " +
-                ", serverUrl = '" + serverUrl + "' " +
-                ", clientid = '" + clientid + "' " +
-                ", userName = '" + userName + "' " +
-                ", useInboundSession = '" + useInboundSession + "' " +
-                " }";
+        return "ActiveMQConnectionRequestInfo{ " + "userName = '" + userName + "' " + ", serverUrl = '" + serverUrl + "' " + ", clientid = '" + clientid + "' "
+                + ", userName = '" + userName + "' " + ", useInboundSession = '" + useInboundSession + "' " + " }";
     }
 
-
     public Boolean getUseInboundSession() {
         return useInboundSession;
     }
 
-
     public void setUseInboundSession(Boolean useInboundSession) {
         this.useInboundSession = useInboundSession;
     }
 
-
     public boolean isUseInboundSessionEnabled() {
-        return useInboundSession!=null && useInboundSession.booleanValue();
+        return useInboundSession != null && useInboundSession.booleanValue();
+    }
+
+    public Short getRedeliveryBackOffMultiplier() {
+        return new Short(redeliveryPolicy.getBackOffMultiplier());
+    }
+
+    public Long getInitialRedeliveryDelay() {
+        return new Long(redeliveryPolicy.getInitialRedeliveryDelay());
+    }
+
+    public Integer getMaximumRedeliveries() {
+        return new Integer(redeliveryPolicy.getMaximumRedeliveries());
+    }
+
+    public Boolean getRedeliveryUseExponentialBackOff() {
+        return new Boolean(redeliveryPolicy.isUseExponentialBackOff());
+    }
+
+    public void setRedeliveryBackOffMultiplier(Short value) {
+        if (value != null) {
+            redeliveryPolicy.setBackOffMultiplier(value.shortValue());
+        }
+    }
+
+    public void setInitialRedeliveryDelay(Long value) {
+        if (value != null) {
+            redeliveryPolicy.setInitialRedeliveryDelay(value.longValue());
+        }
+    }
+
+    public void setMaximumRedeliveries(Integer value) {
+        if (value != null) {
+            redeliveryPolicy.setMaximumRedeliveries(value.intValue());
+        }
+    }
+
+    public void setRedeliveryUseExponentialBackOff(Boolean value) {
+        if (value != null) {
+            redeliveryPolicy.setUseExponentialBackOff(value.booleanValue());
+        }
+    }
+
+    public Integer getDurableTopicPrefetch() {
+        return new Integer(prefetchPolicy.getDurableTopicPrefetch());
+    }
+
+    public Integer getInputStreamPrefetch() {
+        return new Integer(prefetchPolicy.getInputStreamPrefetch());
+    }
+
+    public Integer getQueueBrowserPrefetch() {
+        return new Integer(prefetchPolicy.getQueueBrowserPrefetch());
+    }
+
+    public Integer getQueuePrefetch() {
+        return new Integer(prefetchPolicy.getQueuePrefetch());
+    }
+
+    public Integer getTopicPrefetch() {
+        return new Integer(prefetchPolicy.getTopicPrefetch());
+    }
+
+    public void setAllPrefetchValues(Integer i) {
+        if (i != null) {
+            prefetchPolicy.setAll(i.intValue());
+        }
+    }
+
+    public void setDurableTopicPrefetch(Integer durableTopicPrefetch) {
+        if (durableTopicPrefetch != null) {
+            prefetchPolicy.setDurableTopicPrefetch(durableTopicPrefetch.intValue());
+        }
+    }
+
+    public void setInputStreamPrefetch(Integer inputStreamPrefetch) {
+        if (inputStreamPrefetch != null) {
+            prefetchPolicy.setInputStreamPrefetch(inputStreamPrefetch.intValue());
+        }
+    }
+
+    public void setQueueBrowserPrefetch(Integer queueBrowserPrefetch) {
+        if (queueBrowserPrefetch != null) {
+            prefetchPolicy.setQueueBrowserPrefetch(queueBrowserPrefetch.intValue());
+        }
+    }
+
+    public void setQueuePrefetch(Integer queuePrefetch) {
+        if (queuePrefetch != null) {
+            prefetchPolicy.setQueuePrefetch(queuePrefetch.intValue());
+        }
+    }
+
+    public void setTopicPrefetch(Integer topicPrefetch) {
+        if (topicPrefetch != null) {
+            prefetchPolicy.setTopicPrefetch(topicPrefetch.intValue());
+        }
+    }
+
+    /**
+     * Returns the redelivery policy; not using bean properties to avoid
+     * breaking compatibility with JCA configuration in J2EE
+     */
+    public RedeliveryPolicy redeliveryPolicy() {
+        return redeliveryPolicy;
+    }
+
+    /**
+     * Returns the prefetch policy; not using bean properties to avoid
+     * breaking compatibility with JCA configuration in J2EE
+     */
+    public ActiveMQPrefetchPolicy prefetchPolicy() {
+        return prefetchPolicy;
     }
 }

Modified: incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnectionFactory.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnectionFactory.java?rev=366152&r1=366151&r2=366152&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnectionFactory.java (original)
+++ incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnectionFactory.java Thu Jan  5 02:44:52 2006
@@ -31,31 +31,30 @@
 import javax.security.auth.Subject;
 
 /**
- * @version $Revisio    n$
+ * @version $Revisio n$
  * 
- * TODO: Must override equals and hashCode (JCA spec 16.4) 
+ * TODO: Must override equals and hashCode (JCA spec 16.4)
  */
-public class ActiveMQManagedConnectionFactory implements
-        ManagedConnectionFactory, ResourceAdapterAssociation {
+public class ActiveMQManagedConnectionFactory implements ManagedConnectionFactory, ResourceAdapterAssociation {
 
     private static final long serialVersionUID = 6196921962230582875L;
-    
+
     private ActiveMQResourceAdapter adapter;
     private PrintWriter logWriter;
     private ActiveMQConnectionRequestInfo info = new ActiveMQConnectionRequestInfo();
-    
+
     public void setResourceAdapter(ResourceAdapter adapter) throws ResourceException {
         this.adapter = (ActiveMQResourceAdapter) adapter;
         ActiveMQConnectionRequestInfo baseInfo = this.adapter.getInfo().copy();
-        if( info.getClientid()==null ) 
+        if (info.getClientid() == null)
             info.setClientid(baseInfo.getClientid());
-        if( info.getPassword()==null )
+        if (info.getPassword() == null)
             info.setPassword(baseInfo.getPassword());
-        if( info.getServerUrl()==null )
+        if (info.getServerUrl() == null)
             info.setServerUrl(baseInfo.getServerUrl());
-        if( info.getUseInboundSession()==null )
+        if (info.getUseInboundSession() == null)
             info.setUseInboundSession(baseInfo.getUseInboundSession());
-        if( info.getUserName()==null )
+        if (info.getUserName() == null)
             info.setUserName(baseInfo.getUserName());
     }
 
@@ -71,11 +70,11 @@
     }
 
     /**
-     * This is used when not running in an app server.  For now we are creating a
+     * This is used when not running in an app server. For now we are creating a
      * ConnectionFactory that has our SimpleConnectionManager implementation but
-     * it may be a better idea to not support this.  The JMS api will have many quirks
-     * the user may not expect when running through the resource adapter.
-     *
+     * it may be a better idea to not support this. The JMS api will have many
+     * quirks the user may not expect when running through the resource adapter.
+     * 
      * @see javax.resource.spi.ManagedConnectionFactory#createConnectionFactory()
      */
     public Object createConnectionFactory() throws ResourceException {
@@ -88,17 +87,18 @@
      */
     public ManagedConnection createManagedConnection(Subject subject, ConnectionRequestInfo info) throws ResourceException {
         try {
-            ActiveMQConnectionRequestInfo amqInfo = (ActiveMQConnectionRequestInfo)info;
+            ActiveMQConnectionRequestInfo amqInfo = (ActiveMQConnectionRequestInfo) info;
             return new ActiveMQManagedConnection(subject, adapter.makeConnection(amqInfo), amqInfo);
-        } catch (JMSException e) {
+        }
+        catch (JMSException e) {
             throw new ResourceException("Could not create connection.", e);
         }
     }
 
     /**
      * @see javax.resource.spi.ManagedConnectionFactory#matchManagedConnections(java.util.Set,
-            *      javax.security.auth.Subject,
-            *      javax.resource.spi.ConnectionRequestInfo)
+     *      javax.security.auth.Subject,
+     *      javax.resource.spi.ConnectionRequestInfo)
      */
     public ManagedConnection matchManagedConnections(Set connections, Subject subject, ConnectionRequestInfo info) throws ResourceException {
         Iterator iterator = connections.iterator();
@@ -108,7 +108,8 @@
                 try {
                     c.associate(subject, (ActiveMQConnectionRequestInfo) info);
                     return c;
-                } catch (JMSException e) {
+                }
+                catch (JMSException e) {
                     throw new ResourceException(e);
                 }
             }
@@ -130,12 +131,12 @@
         return logWriter;
     }
 
-    ///////////////////////////////////////////////////////////////////////////
+    // /////////////////////////////////////////////////////////////////////////
     //
     // Bean setters and getters.
     //
-    ///////////////////////////////////////////////////////////////////////////
-    
+    // /////////////////////////////////////////////////////////////////////////
+
     public String getClientid() {
         return info.getClientid();
     }
@@ -174,5 +175,85 @@
 
     public void setUseInboundSession(Boolean useInboundSession) {
         info.setUseInboundSession(useInboundSession);
+    }
+
+    public Long getInitialRedeliveryDelay() {
+        return info.getInitialRedeliveryDelay();
+    }
+
+    public Integer getMaximumRedeliveries() {
+        return info.getMaximumRedeliveries();
+    }
+
+    public Short getRedeliveryBackOffMultiplier() {
+        return info.getRedeliveryBackOffMultiplier();
+    }
+
+    public Boolean getRedeliveryUseExponentialBackOff() {
+        return info.getRedeliveryUseExponentialBackOff();
+    }
+
+    public boolean isUseInboundSessionEnabled() {
+        return info.isUseInboundSessionEnabled();
+    }
+
+    public void setInitialRedeliveryDelay(Long value) {
+        info.setInitialRedeliveryDelay(value);
+    }
+
+    public void setMaximumRedeliveries(Integer value) {
+        info.setMaximumRedeliveries(value);
+    }
+
+    public void setRedeliveryBackOffMultiplier(Short value) {
+        info.setRedeliveryBackOffMultiplier(value);
+    }
+
+    public Integer getDurableTopicPrefetch() {
+        return info.getDurableTopicPrefetch();
+    }
+
+    public Integer getInputStreamPrefetch() {
+        return info.getInputStreamPrefetch();
+    }
+
+    public Integer getQueueBrowserPrefetch() {
+        return info.getQueueBrowserPrefetch();
+    }
+
+    public Integer getQueuePrefetch() {
+        return info.getQueuePrefetch();
+    }
+
+    public Integer getTopicPrefetch() {
+        return info.getTopicPrefetch();
+    }
+
+    public void setAllPrefetchValues(Integer i) {
+        info.setAllPrefetchValues(i);
+    }
+
+    public void setDurableTopicPrefetch(Integer durableTopicPrefetch) {
+        info.setDurableTopicPrefetch(durableTopicPrefetch);
+    }
+
+    public void setInputStreamPrefetch(Integer inputStreamPrefetch) {
+        info.setInputStreamPrefetch(inputStreamPrefetch);
+    }
+
+    public void setQueueBrowserPrefetch(Integer queueBrowserPrefetch) {
+        info.setQueueBrowserPrefetch(queueBrowserPrefetch);
+    }
+
+    public void setQueuePrefetch(Integer queuePrefetch) {
+        info.setQueuePrefetch(queuePrefetch);
+    }
+
+    public void setRedeliveryUseExponentialBackOff(Boolean value) {
+        info.setRedeliveryUseExponentialBackOff(value);
+    }
+
+    public void setTopicPrefetch(Integer topicPrefetch) {
+        info.setTopicPrefetch(topicPrefetch);
     }
 }

Modified: incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQResourceAdapter.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQResourceAdapter.java?rev=366152&r1=366151&r2=366152&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQResourceAdapter.java (original)
+++ incubator/activemq/trunk/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQResourceAdapter.java Thu Jan  5 02:44:52 2006
@@ -118,7 +118,8 @@
      */
     synchronized private ActiveMQConnectionFactory createConnectionFactory(ActiveMQConnectionRequestInfo info) throws JMSException {
         ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(info.getServerUrl());
-        
+        factory.setRedeliveryPolicy(info.redeliveryPolicy());
+        factory.setPrefetchPolicy(info.prefetchPolicy());
         return factory;
     }
 
@@ -320,6 +321,86 @@
      */
     public void setBrokerXmlConfig(String brokerXmlConfig) {
         this.brokerXmlConfig=brokerXmlConfig;
+    }
+
+    public Integer getDurableTopicPrefetch() {
+        return info.getDurableTopicPrefetch();
+    }
+
+    public Long getInitialRedeliveryDelay() {
+        return info.getInitialRedeliveryDelay();
+    }
+
+    public Integer getInputStreamPrefetch() {
+        return info.getInputStreamPrefetch();
+    }
+
+    public Integer getMaximumRedeliveries() {
+        return info.getMaximumRedeliveries();
+    }
+
+    public Integer getQueueBrowserPrefetch() {
+        return info.getQueueBrowserPrefetch();
+    }
+
+    public Integer getQueuePrefetch() {
+        return info.getQueuePrefetch();
+    }
+
+    public Short getRedeliveryBackOffMultiplier() {
+        return info.getRedeliveryBackOffMultiplier();
+    }
+
+    public Boolean getRedeliveryUseExponentialBackOff() {
+        return info.getRedeliveryUseExponentialBackOff();
+    }
+
+    public Integer getTopicPrefetch() {
+        return info.getTopicPrefetch();
+    }
+
+    public boolean isUseInboundSessionEnabled() {
+        return info.isUseInboundSessionEnabled();
+    }
+
+    public void setAllPrefetchValues(Integer i) {
+        info.setAllPrefetchValues(i);
+    }
+
+    public void setDurableTopicPrefetch(Integer durableTopicPrefetch) {
+        info.setDurableTopicPrefetch(durableTopicPrefetch);
+    }
+
+    public void setInitialRedeliveryDelay(Long value) {
+        info.setInitialRedeliveryDelay(value);
+    }
+
+    public void setInputStreamPrefetch(Integer inputStreamPrefetch) {
+        info.setInputStreamPrefetch(inputStreamPrefetch);
+    }
+
+    public void setMaximumRedeliveries(Integer value) {
+        info.setMaximumRedeliveries(value);
+    }
+
+    public void setQueueBrowserPrefetch(Integer queueBrowserPrefetch) {
+        info.setQueueBrowserPrefetch(queueBrowserPrefetch);
+    }
+
+    public void setQueuePrefetch(Integer queuePrefetch) {
+        info.setQueuePrefetch(queuePrefetch);
+    }
+
+    public void setRedeliveryBackOffMultiplier(Short value) {
+        info.setRedeliveryBackOffMultiplier(value);
+    }
+
+    public void setRedeliveryUseExponentialBackOff(Boolean value) {
+        info.setRedeliveryUseExponentialBackOff(value);
+    }
+
+    public void setTopicPrefetch(Integer topicPrefetch) {
+        info.setTopicPrefetch(topicPrefetch);
     }
 
     /**