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