You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2012/02/26 23:16:10 UTC

svn commit: r1293947 - in /jmeter/trunk: src/protocol/jms/org/apache/jmeter/protocol/jms/client/ src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/ src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/ xdocs/

Author: pmouawad
Date: Sun Feb 26 22:16:10 2012
New Revision: 1293947

URL: http://svn.apache.org/viewvc?rev=1293947&view=rev
Log:
Bug 52775 - JMS Publisher : Add Non Persistent Delivery option

Modified:
    jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java
    jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
    jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java?rev=1293947&r1=1293946&r2=1293947&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java (original)
+++ jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java Sun Feb 26 22:16:10 2012
@@ -24,6 +24,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import javax.jms.Connection;
+import javax.jms.DeliveryMode;
 import javax.jms.Destination;
 import javax.jms.JMSException;
 import javax.jms.MapMessage;
@@ -54,6 +55,29 @@ public class Publisher implements Closea
 
     /**
      * Create a publisher using either the jndi.properties file or the provided parameters.
+     * Uses a static destination and persistent messages(for backward compatibility)
+     * 
+     * @param useProps true if a jndi.properties file is to be used
+     * @param initialContextFactory the (ignored if useProps is true)
+     * @param providerUrl (ignored if useProps is true)
+     * @param connfactory
+     * @param destinationName
+     * @param useAuth (ignored if useProps is true)
+     * @param securityPrincipal (ignored if useProps is true)
+     * @param securityCredentials (ignored if useProps is true) 
+     * @throws JMSException if the context could not be initialised, or there was some other error
+     * @throws NamingException 
+     */
+    public Publisher(boolean useProps, String initialContextFactory, String providerUrl, 
+            String connfactory, String destinationName, boolean useAuth,
+            String securityPrincipal, String securityCredentials) throws JMSException, NamingException {
+        this(useProps, initialContextFactory, providerUrl, connfactory,
+                destinationName, useAuth, securityPrincipal,
+                securityCredentials, true, false);
+    }
+    
+    /**
+     * Create a publisher using either the jndi.properties file or the provided parameters.
      * Uses a static destination (for backward compatibility)
      * 
      * @param useProps true if a jndi.properties file is to be used
@@ -64,15 +88,16 @@ public class Publisher implements Closea
      * @param useAuth (ignored if useProps is true)
      * @param securityPrincipal (ignored if useProps is true)
      * @param securityCredentials (ignored if useProps is true)
+     * @param useNonPersistentMessages Flag Delivery Mode as Non persistent if true
      * @throws JMSException if the context could not be initialised, or there was some other error
      * @throws NamingException 
      */
     public Publisher(boolean useProps, String initialContextFactory, String providerUrl, 
             String connfactory, String destinationName, boolean useAuth,
-            String securityPrincipal, String securityCredentials) throws JMSException, NamingException {
+            String securityPrincipal, String securityCredentials, boolean useNonPersistentMessages) throws JMSException, NamingException {
         this(useProps, initialContextFactory, providerUrl, connfactory,
                 destinationName, useAuth, securityPrincipal,
-                securityCredentials, true);
+                securityCredentials, true, useNonPersistentMessages);
     }
     
     /**
@@ -86,13 +111,14 @@ public class Publisher implements Closea
      * @param securityPrincipal (ignored if useProps is true)
      * @param securityCredentials (ignored if useProps is true)
      * @param staticDestination true is the destination is not to change between loops
+     * @param useNonPersistentMessages Flag Delivery Mode as Non persistent if true
      * @throws JMSException if the context could not be initialised, or there was some other error
      * @throws NamingException 
      */
     public Publisher(boolean useProps, String initialContextFactory, String providerUrl, 
             String connfactory, String destinationName, boolean useAuth,
             String securityPrincipal, String securityCredentials,
-            boolean staticDestination) throws JMSException, NamingException {
+            boolean staticDestination,  boolean useNonPersistentMessages) throws JMSException, NamingException {
         super();
         boolean initSuccess = false;
         try{
@@ -107,6 +133,9 @@ public class Publisher implements Closea
             } else {
                 producer = session.createProducer(null);
             }
+            if(useNonPersistentMessages) {
+                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+            }
             initSuccess = true;
         } finally {
             if(!initSuccess) {

Modified: jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java?rev=1293947&r1=1293946&r2=1293947&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java (original)
+++ jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java Sun Feb 26 22:16:10 2012
@@ -99,6 +99,7 @@ public class JMSPublisherGui extends Abs
 
     private final JLabeledRadioI18N msgChoice = new JLabeledRadioI18N("jms_message_type", MSGTYPES_ITEMS, TEXT_MSG_RSC); //$NON-NLS-1$
     
+    private JCheckBox useNonPersistentDelivery;
 
     // These are the names of properties used to define the labels
     private final static String DEST_SETUP_STATIC = "jms_dest_setup_static"; // $NON-NLS-1$
@@ -141,6 +142,7 @@ public class JMSPublisherGui extends Abs
         sampler.setMessageChoice(msgChoice.getText());
         sampler.setIterations(iterations.getText());
         sampler.setUseAuth(useAuth.isSelected());
+        sampler.setUseNonPersistentDelivery(useNonPersistentDelivery.isSelected());
         return sampler;
     }
 
@@ -167,6 +169,7 @@ public class JMSPublisherGui extends Abs
         sampler.setIterations(iterations.getText());
         sampler.setUseAuth(useAuth.isSelected());
         sampler.setDestinationStatic(destSetup.getText().equals(DEST_SETUP_STATIC));
+        sampler.setUseNonPersistentDelivery(useNonPersistentDelivery.isSelected());
     }
 
     /**
@@ -228,6 +231,7 @@ public class JMSPublisherGui extends Abs
         jmsUser.setEnabled(false);
         jmsPwd.setEnabled(false);
         destSetup.setText(DEST_SETUP_STATIC);
+        useNonPersistentDelivery.setSelected(false);
     }
 
     /**
@@ -255,6 +259,7 @@ public class JMSPublisherGui extends Abs
         jmsUser.setEnabled(useAuth.isSelected());
         jmsPwd.setEnabled(useAuth.isSelected());
         destSetup.setText(sampler.isDestinationStatic() ? DEST_SETUP_STATIC : DEST_SETUP_DYNAMIC);
+        useNonPersistentDelivery.setSelected(sampler.getUseNonPersistentDelivery());
     }
 
     /**
@@ -314,9 +319,11 @@ public class JMSPublisherGui extends Abs
     
     private JPanel createDestinationPane() {
         JPanel pane = new JPanel(new BorderLayout(3, 0));
-        pane.add(jmsDestination, BorderLayout.CENTER);
+        pane.add(jmsDestination, BorderLayout.WEST);
         destSetup.setLayout(new BoxLayout(destSetup, BoxLayout.X_AXIS));
-        pane.add(destSetup, BorderLayout.EAST);
+        pane.add(destSetup, BorderLayout.CENTER);
+        useNonPersistentDelivery = new JCheckBox(JMeterUtils.getResString("jms_use_non_persistent_delivery"),false); //$NON-NLS-1$
+        pane.add(useNonPersistentDelivery, BorderLayout.EAST);
         return pane;
     }
 }

Modified: jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java?rev=1293947&r1=1293946&r2=1293947&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java (original)
+++ jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java Sun Feb 26 22:16:10 2012
@@ -60,6 +60,8 @@ public class PublisherSampler extends Ba
     private static final String CONFIG_CHOICE = "jms.config_choice"; //$NON-NLS-1$
 
     private static final String MESSAGE_CHOICE = "jms.config_msg_type"; //$NON-NLS-1$
+    
+    private static final String NON_PERSISTENT_DELIVERY = "jms.non_persistent"; //$NON-NLS-1$
     //--
 
     // Does not need to be synch. because it is only accessed from the sampler thread
@@ -117,7 +119,7 @@ public class PublisherSampler extends Ba
     private void initClient() throws JMSException, NamingException {
         publisher = new Publisher(getUseJNDIPropertiesAsBoolean(), getJNDIInitialContextFactory(), 
                 getProviderUrl(), getConnectionFactory(), getDestination(), isUseAuth(), getUsername(),
-                getPassword(), isDestinationStatic());
+                getPassword(), isDestinationStatic(), getUseNonPersistentDelivery());
         ClientPool.addClient(publisher);
         log.debug("PublisherSampler.initClient called");
     }
@@ -344,4 +346,18 @@ public class PublisherSampler extends Ba
     public String getTextMessage() {
         return getPropertyAsString(TEXT_MSG);
     }
+
+    /**
+     * @param value boolean use NON_PERSISTENT
+     */
+    public void setUseNonPersistentDelivery(boolean value) {
+        setProperty(NON_PERSISTENT_DELIVERY, value, false);
+    }
+    
+    /**
+     * @return true if NON_PERSISTENT delivery must be used
+     */
+    public boolean getUseNonPersistentDelivery() {
+        return getPropertyAsBoolean(NON_PERSISTENT_DELIVERY, false);
+    }
 }

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1293947&r1=1293946&r2=1293947&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Sun Feb 26 22:16:10 2012
@@ -121,6 +121,7 @@ When doing replacement of User Defined V
 
 <h3>Other samplers</h3>
 <ul>
+<li>Bug 52775 - JMS Publisher : Add Non Persistent Delivery option</li>
 </ul>
 
 <h3>Controllers</h3>