Author: sebb
Date: Sat Sep 17 22:07:35 2011
New Revision: 1172077

URL: http://svn.apache.org/viewvc?rev=1172077&view=rev
Log:
Bug 51691 - Authorization does not work for JMS Publisher and JMS Subscriber

Modified:
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
    
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java
    jakarta/jmeter/trunk/xdocs/changes.xml

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java?rev=1172077&r1=1172076&r2=1172077&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java 
(original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java 
Sat Sep 17 22:07:35 2011
@@ -19,6 +19,7 @@
 package org.apache.jmeter.protocol.jms;
 
 import java.util.Enumeration;
+import java.util.Map;
 
 import javax.jms.Connection;
 import javax.jms.Destination;
@@ -148,7 +149,16 @@ public final class Utils {
             throw new NamingException("Lookup failed: "+e.toString());
         }
         if (objfac instanceof javax.jms.ConnectionFactory) {
-            return ((javax.jms.ConnectionFactory) objfac).createConnection();
+            @SuppressWarnings("unchecked") // The environment is supposed to 
use String keys only
+            Map<String, Object> env = (Map<String, 
Object>)ctx.getEnvironment();
+            if(env.containsKey(Context.SECURITY_PRINCIPAL)) {
+                String username = (String)env.get(Context.SECURITY_PRINCIPAL);
+                String password = 
(String)env.get(Context.SECURITY_CREDENTIALS);
+                return ((javax.jms.ConnectionFactory) 
objfac).createConnection(username, password);                
+            }
+            else {
+                return ((javax.jms.ConnectionFactory) 
objfac).createConnection();
+            }
         }
         throw new NamingException("Expected javax.jms.ConnectionFactory, found 
"+objfac.getClass().getName());
     }

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java?rev=1172077&r1=1172076&r2=1172077&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java
 Sat Sep 17 22:07:35 2011
@@ -26,6 +26,7 @@ import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.log.Logger;
 
@@ -52,7 +53,8 @@ public class InitialContextFactory {
      */
     public static synchronized Context lookupContext(String 
initialContextFactory, 
             String providerUrl, boolean useAuth, String securityPrincipal, 
String securityCredentials) throws NamingException {
-        Context ctx = MAP.get(initialContextFactory + providerUrl);
+        String cacheKey = createKey(initialContextFactory ,providerUrl, 
securityPrincipal, securityCredentials);
+        Context ctx = MAP.get(cacheKey);
         if (ctx == null) {
             Properties props = new Properties();
             props.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
initialContextFactory);
@@ -70,12 +72,38 @@ public class InitialContextFactory {
             } catch (Exception e) {
                 throw new NamingException(e.toString());
             }
-            MAP.put(initialContextFactory + providerUrl, ctx);
+            MAP.put(cacheKey, ctx);
         }
         return ctx;
     }
 
     /**
+     * Create cache key
+     * @param initialContextFactory
+     * @param providerUrl
+     * @param securityPrincipal
+     * @param securityCredentials
+     * @return
+     */
+    private static String createKey(String initialContextFactory,
+            String providerUrl, String securityPrincipal,
+            String securityCredentials) {
+       StringBuilder builder = new StringBuilder();
+       builder.append(initialContextFactory);
+       builder.append("#");
+       builder.append(providerUrl);
+       builder.append("#");
+       if(!StringUtils.isEmpty(securityPrincipal)) {
+           builder.append(securityPrincipal);
+           builder.append("#");
+       }
+       if(!StringUtils.isEmpty(securityCredentials)) {
+           builder.append(securityCredentials);
+       }
+       return builder.toString();
+    }
+
+    /**
      * Initialize the JNDI initial context
      *
      * @param useProps if true, create a new InitialContext; otherwise use the 
other parameters to call

Modified: 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java?rev=1172077&r1=1172076&r2=1172077&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java
 Sat Sep 17 22:07:35 2011
@@ -224,6 +224,8 @@ public class JMSPublisherGui extends Abs
         updateConfig(USE_TEXT_RSC);
         iterations.setText("1"); // $NON-NLS-1$
         useAuth.setSelected(false);
+        jmsUser.setEnabled(false);
+        jmsPwd.setEnabled(false);
         destSetup.setText(DEST_SETUP_STATIC);
     }
 
@@ -249,6 +251,8 @@ public class JMSPublisherGui extends Abs
         updateConfig(sampler.getConfigChoice());
         iterations.setText(sampler.getIterations());
         useAuth.setSelected(sampler.isUseAuth());
+        jmsUser.setEnabled(useAuth.isSelected());
+        jmsPwd.setEnabled(useAuth.isSelected());
         destSetup.setText(sampler.isDestinationStatic() ? DEST_SETUP_STATIC : 
DEST_SETUP_DYNAMIC);
     }
 
@@ -265,8 +269,8 @@ public class JMSPublisherGui extends Abs
             jndiICF.setEnabled(!useProperties.isSelected());
             urlField.setEnabled(!useProperties.isSelected());
         } else if (event.getSource() == useAuth) {
-            jmsUser.setEnabled(!useAuth.isSelected());
-            jmsPwd.setEnabled(!useAuth.isSelected());
+            jmsUser.setEnabled(useAuth.isSelected());
+            jmsPwd.setEnabled(useAuth.isSelected());
         }
     }
 

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=1172077&r1=1172076&r2=1172077&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 Sep 17 22:07:35 2011
@@ -203,6 +203,8 @@ public class JMSSubscriberGui extends Ab
         jmsPwd.setText(sampler.getPassword());
         iterations.setText(sampler.getIterations());
         useAuth.setSelected(sampler.isUseAuth());
+        jmsUser.setEnabled(useAuth.isSelected());
+        jmsPwd.setEnabled(useAuth.isSelected());
         readResponse.setSelected(sampler.getReadResponseAsBoolean());
         clientChoice.setText(sampler.getClientChoice());
         stopBetweenSamples.setSelected(sampler.isStopBetweenSamples());
@@ -224,6 +226,8 @@ public class JMSSubscriberGui extends Ab
         iterations.setText("1"); // $NON-NLS-1$
         timeout.setText("");
         useAuth.setSelected(false);
+        jmsUser.setEnabled(false);
+        jmsPwd.setEnabled(false);
         readResponse.setSelected(true);
         clientChoice.setText(RECEIVE_RSC);
         stopBetweenSamples.setSelected(false);
@@ -239,8 +243,8 @@ public class JMSSubscriberGui extends Ab
             jndiICF.setEnabled(!useProperties.isSelected());
             urlField.setEnabled(!useProperties.isSelected());
         } else if (event.getSource() == useAuth) {
-            jmsUser.setEnabled(!useAuth.isSelected());
-            jmsPwd.setEnabled(!useAuth.isSelected());
+            jmsUser.setEnabled(useAuth.isSelected());
+            jmsPwd.setEnabled(useAuth.isSelected());
         }
     }
     

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1172077&r1=1172076&r2=1172077&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Sat Sep 17 22:07:35 2011
@@ -87,6 +87,7 @@ This can be overridden by setting the JM
 <li>Bug 51830 - Webservice Soap Request triggers too many popups when 
Webservice WSDL URL is down</li>
 <li>WebService(SOAP) request - add a connect timeout to get the wsdl used to 
populate Web Methods when server doesn't response</li>
 <li>Bug 51841 - JMS : If an error occurs in ReceiveSubscriber constructor or 
Publisher, then Connections will stay open</li>
+<li>Bug 51691 - Authorization does not work for JMS Publisher and JMS 
Subscriber</li>
 </ul>
 
 <h3>Controllers</h3>



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@jakarta.apache.org
For additional commands, e-mail: notifications-h...@jakarta.apache.org

Reply via email to