Author: pmouawad
Date: Sat Oct 15 14:42:43 2011
New Revision: 1183653

URL: http://svn.apache.org/viewvc?rev=1183653&view=rev
Log:
Bug 51419 - JMS Subscriber: ability to use Selectors

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
    jakarta/jmeter/trunk/xdocs/changes.xml
    jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_pub.png
    jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_sub.png
    jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
Sat Oct 15 14:42:43 2011
@@ -372,6 +372,7 @@ jms_receive_queue=JNDI name Receive queu
 jms_request=Request Only
 jms_requestreply=Request Response
 jms_sample_title=JMS Default Request
+jms_selector=JMS Selector
 jms_send_queue=JNDI name Request queue
 jms_stop_between_samples=Stop between samples?
 jms_subscriber_on_message=Use MessageListener.onMessage()

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java
 Sat Oct 15 14:42:43 2011
@@ -74,6 +74,9 @@ public class ReceiveSubscriber implement
      * @param providerUrl
      * @param connfactory
      * @param destinationName
+     * @param durableSubscriptionId
+     * @param clientId
+     * @param jmsSelector Message Selector
      * @param useAuth
      * @param securityPrincipal
      * @param securityCredentials
@@ -82,11 +85,11 @@ public class ReceiveSubscriber implement
      */
     public ReceiveSubscriber(boolean useProps, 
             String initialContextFactory, String providerUrl, String 
connfactory, String destinationName,
-            String durableSubscriptionId, String clientId, boolean useAuth, 
+            String durableSubscriptionId, String clientId, String jmsSelector, 
boolean useAuth, 
             String securityPrincipal, String securityCredentials) throws 
NamingException, JMSException {
         this(0, useProps, 
                 initialContextFactory, providerUrl, connfactory, 
destinationName,
-                durableSubscriptionId, clientId, useAuth, 
+                durableSubscriptionId, clientId, jmsSelector, useAuth, 
                 securityPrincipal, securityCredentials, false);
     }
 
@@ -103,6 +106,9 @@ public class ReceiveSubscriber implement
      * @param providerUrl
      * @param connfactory
      * @param destinationName
+     * @param durableSubscriptionId
+     * @param clientId
+     * @param jmsSelector Message Selector
      * @param useAuth
      * @param securityPrincipal
      * @param securityCredentials
@@ -111,11 +117,11 @@ public class ReceiveSubscriber implement
      */
     public ReceiveSubscriber(int queueSize, boolean useProps, 
             String initialContextFactory, String providerUrl, String 
connfactory, String destinationName,
-            String durableSubscriptionId, String clientId, boolean useAuth, 
+            String durableSubscriptionId, String clientId, String jmsSelector, 
boolean useAuth, 
             String securityPrincipal, String securityCredentials) throws 
NamingException, JMSException {
         this(queueSize,  useProps, 
              initialContextFactory, providerUrl, connfactory, destinationName,
-             durableSubscriptionId, clientId, useAuth, 
+             durableSubscriptionId, clientId, jmsSelector, useAuth, 
              securityPrincipal,  securityCredentials, true);
     }
     
@@ -133,6 +139,9 @@ public class ReceiveSubscriber implement
      * @param providerUrl
      * @param connfactory
      * @param destinationName
+     * @param durableSubscriptionId
+     * @param clientId
+     * @param jmsSelector Message Selector
      * @param useAuth
      * @param securityPrincipal
      * @param securityCredentials
@@ -142,7 +151,7 @@ public class ReceiveSubscriber implement
      */
     private ReceiveSubscriber(int queueSize, boolean useProps, 
             String initialContextFactory, String providerUrl, String 
connfactory, String destinationName,
-            String durableSubscriptionId, String clientId, boolean useAuth, 
+            String durableSubscriptionId, String clientId, String jmsSelector, 
boolean useAuth, 
             String securityPrincipal, String securityCredentials, boolean 
useMessageListener) throws NamingException, JMSException {
         boolean initSuccess = false;
         try{
@@ -154,7 +163,7 @@ public class ReceiveSubscriber implement
             }
             SESSION = CONN.createSession(false, Session.AUTO_ACKNOWLEDGE);
             Destination dest = Utils.lookupDestination(ctx, destinationName);
-            SUBSCRIBER = createSubscriber(SESSION, dest, 
durableSubscriptionId);
+            SUBSCRIBER = createSubscriber(SESSION, dest, 
durableSubscriptionId, jmsSelector);
             if(useMessageListener) {
                 if (queueSize <=0) {
                     queue = new LinkedBlockingQueue<Message>();
@@ -184,15 +193,25 @@ public class ReceiveSubscriber implement
      * @param durableSubscriptionId 
      *                                 If neither empty nor null, this means 
that a durable 
      *                                 subscription will be used
+     * @param jmsSelector JMS Selector
      * @return
      * @throws JMSException
      */
     private MessageConsumer createSubscriber(Session session, 
-               Destination destination, String durableSubscriptionId) throws 
JMSException {
+               Destination destination, String durableSubscriptionId, 
+               String jmsSelector) throws JMSException {
        if (isEmpty(durableSubscriptionId)) {
-               return  session.createConsumer(destination);
+           if(isEmpty(jmsSelector)) {
+               return session.createConsumer(destination);
+           } else {
+               return session.createConsumer(destination, jmsSelector);
+           }
         } else {
-               return session.createDurableSubscriber((Topic) destination, 
durableSubscriptionId); 
+            if(isEmpty(jmsSelector)) {
+                return session.createDurableSubscriber((Topic) destination, 
durableSubscriptionId); 
+            } else {
+                return session.createDurableSubscriber((Topic) destination, 
durableSubscriptionId, jmsSelector, false);                 
+            }
         }      
     }
 

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
 Sat Oct 15 14:42:43 2011
@@ -65,6 +65,9 @@ public class JMSSubscriberGui extends Ab
     private final JLabeledTextField jmsClientId =
         new JLabeledTextField(JMeterUtils.getResString("jms_client_id")); // 
$NON-NLS-1$
 
+    private final JLabeledTextField jmsSelector =
+        new JLabeledTextField(JMeterUtils.getResString("jms_selector")); // 
$NON-NLS-1$
+
     private final JLabeledTextField jmsUser =
         new JLabeledTextField(JMeterUtils.getResString("jms_user")); // 
$NON-NLS-1$
 
@@ -140,6 +143,7 @@ public class JMSSubscriberGui extends Ab
         sampler.setDestination(jmsDestination.getText());
         sampler.setDurableSubscriptionId(jmsDurableSubscriptionId.getText());
         sampler.setClientID(jmsClientId.getText());
+        sampler.setJmsSelector(jmsSelector.getText());
         sampler.setUsername(jmsUser.getText());
         sampler.setPassword(jmsPwd.getText());
         sampler.setUseAuth(useAuth.isSelected());
@@ -174,6 +178,7 @@ public class JMSSubscriberGui extends Ab
         mainPanel.add(createDestinationPane());
         mainPanel.add(jmsDurableSubscriptionId);
         mainPanel.add(jmsClientId);
+        mainPanel.add(jmsSelector);
         mainPanel.add(useAuth);
         mainPanel.add(jmsUser);
         mainPanel.add(jmsPwd);
@@ -205,6 +210,7 @@ public class JMSSubscriberGui extends Ab
         jmsDestination.setText(sampler.getDestination());
         jmsDurableSubscriptionId.setText(sampler.getDurableSubscriptionId());
         jmsClientId.setText(sampler.getClientId());
+        jmsSelector.setText(sampler.getJmsSelector());
         jmsUser.setText(sampler.getUsername());
         jmsPwd.setText(sampler.getPassword());
         iterations.setText(sampler.getIterations());
@@ -228,6 +234,7 @@ public class JMSSubscriberGui extends Ab
         jmsDestination.setText(""); // $NON-NLS-1$
         jmsDurableSubscriptionId.setText(""); // $NON-NLS-1$
         jmsClientId.setText(""); // $NON-NLS-1$
+        jmsSelector.setText(""); // $NON-NLS-1$
         jmsUser.setText(""); // $NON-NLS-1$
         jmsPwd.setText(""); // $NON-NLS-1$
         iterations.setText("1"); // $NON-NLS-1$

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java
 Sat Oct 15 14:42:43 2011
@@ -79,16 +79,19 @@ public class SubscriberSampler extends B
     // Don't change the string, as it is used in JMX files
     private static final String CLIENT_CHOICE = "jms.client_choice"; // 
$NON-NLS-1$
     private static final String TIMEOUT = "jms.timeout"; // $NON-NLS-1$
-    private static final String TIMEOUT_DEFAULT = "";
+    private static final String TIMEOUT_DEFAULT = ""; // $NON-NLS-1$
     private static final String DURABLE_SUBSCRIPTION_ID = 
"jms.durableSubscriptionId"; // $NON-NLS-1$
     private static final String CLIENT_ID = "jms.clientId"; // $NON-NLS-1$
+    private static final String JMS_SELECTOR = "jms.selector"; // $NON-NLS-1$
     private static final String DURABLE_SUBSCRIPTION_ID_DEFAULT = "";
     private static final String CLIENT_ID_DEFAULT = ""; // $NON-NLS-1$
+    private static final String JMS_SELECTOR_DEFAULT = ""; // $NON-NLS-1$
     private static final String STOP_BETWEEN = "jms.stop_between_samples"; // 
$NON-NLS-1$
     
     private transient boolean START_ON_SAMPLE = false;
 
     public SubscriberSampler() {
+        super();
     }
 
     /**
@@ -101,7 +104,7 @@ public class SubscriberSampler extends B
     private void initListenerClient() throws JMSException, NamingException {
         SUBSCRIBER = new ReceiveSubscriber(0, getUseJNDIPropertiesAsBoolean(), 
getJNDIInitialContextFactory(),
                     getProviderUrl(), getConnectionFactory(), 
getDestination(), getDurableSubscriptionId(),
-                    getClientId(), isUseAuth(), getUsername(), getPassword());
+                    getClientId(), getJmsSelector(), isUseAuth(), 
getUsername(), getPassword());
         log.debug("SubscriberSampler.initListenerClient called");
     }
 
@@ -113,7 +116,7 @@ public class SubscriberSampler extends B
     private void initReceiveClient() throws NamingException, JMSException {
         SUBSCRIBER = new ReceiveSubscriber(getUseJNDIPropertiesAsBoolean(),
                 getJNDIInitialContextFactory(), getProviderUrl(), 
getConnectionFactory(), getDestination(),
-                getDurableSubscriptionId(), getClientId(), isUseAuth(), 
getUsername(), getPassword());
+                getDurableSubscriptionId(), getClientId(), getJmsSelector(), 
isUseAuth(), getUsername(), getPassword());
         log.debug("SubscriberSampler.initReceiveClient called");
     }
 
@@ -371,6 +374,13 @@ public class SubscriberSampler extends B
     public String getClientId() {
         return getPropertyAsString(CLIENT_ID, CLIENT_ID_DEFAULT);
     }
+    
+    /**
+     * @return JMS selector
+     */
+    public String getJmsSelector() {
+        return getPropertyAsString(JMS_SELECTOR, JMS_SELECTOR_DEFAULT);
+    }
 
     public void setDurableSubscriptionId(String durableSubscriptionId){
         setProperty(DURABLE_SUBSCRIPTION_ID, durableSubscriptionId, 
DURABLE_SUBSCRIPTION_ID_DEFAULT);        
@@ -382,6 +392,13 @@ public class SubscriberSampler extends B
     public void setClientID(String clientId) {
         setProperty(CLIENT_ID, clientId, CLIENT_ID_DEFAULT);
     }
+   
+    /**
+     * @param jmsSelector JMS Selector
+     */
+    public void setJmsSelector(String jmsSelector) {
+        setProperty(JMS_SELECTOR, jmsSelector, JMS_SELECTOR_DEFAULT);
+    }
     
     // This was the old value that was checked for
     private final static String RECEIVE_STR = 
JMeterUtils.getResString(JMSSubscriberGui.RECEIVE_RSC); // $NON-NLS-1$

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Sat Oct 15 14:42:43 2011
@@ -139,6 +139,7 @@ Mirror server now uses default port 8081
 
 <h3>Other samplers</h3>
 <ul>
+<li>Bug 51419 - JMS Subscriber: ability to use Selectors</li>
 </ul>
 
 <h3>Controllers</h3>

Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_pub.png
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_pub.png?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_sub.png
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/jms/jms_sub.png?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1183653&r1=1183652&r2=1183653&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Oct 15 
14:42:43 2011
@@ -1309,6 +1309,8 @@ The following table shows some values wh
   use the respective queue will automatically be generated by the JMS provider 
if it does not exist yet.</property>
   <property name="Client ID" required="No">The Client ID to use when you you 
use a durable subscription. 
   Be sure to add a variable like ${__threadNum} when you have more than one 
Thread.</property>
+  <property name="JMS Selector" required="No">Message Selector as defined by 
JMS specification to extract only 
+  messages that respect the Selector condition. Syntax uses subpart of SQL 
92.</property>
   <property name="Setup" required="Yes">The destination setup type. With At 
startup, the destination name is static (i.e. always same name during the 
test), with Each sample, the destination name is dynamic and is evaluate at 
each sample (i.e. the destination name may be a variable)</property>
   <property name="Authentication" required="Yes">Authentication requirement 
for the JMS provider</property>
   <property name="User" required="No">User Name</property>



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

Reply via email to