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: [email protected]
For additional commands, e-mail: [email protected]