This closes #171

This commit is contained in:
Clebert Suconic 2015-09-17 22:13:25 -04:00
commit 0a3ec0f4da
2 changed files with 64 additions and 0 deletions

View File

@ -696,6 +696,11 @@ public class ActiveMQActivationSpec extends ConnectionFactoryProperties implemen
propsNotSet.add(new PropertyDescriptor("subscriptionName", ActiveMQActivationSpec.class)); propsNotSet.add(new PropertyDescriptor("subscriptionName", ActiveMQActivationSpec.class));
errorMessages.add("If subscription is durable then subscription name must be specified."); errorMessages.add("If subscription is durable then subscription name must be specified.");
} }
if ((isSubscriptionDurable() && getClientID() == null) || (isSubscriptionDurable() && getClientID() != null && getClientID().length() == 0)) {
propsNotSet.add(new PropertyDescriptor("clientID", ActiveMQActivationSpec.class));
errorMessages.add("If subscription is durable then clientID must be specified.");
}
} }
catch (IntrospectionException e) { catch (IntrospectionException e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -714,6 +714,65 @@ public class ActiveMQMessageHandlerTest extends ActiveMQRATestBase {
} }
} }
@Test
public void testNullClientID() throws Exception {
ActiveMQResourceAdapter qResourceAdapter = newResourceAdapter();
MyBootstrapContext ctx = new MyBootstrapContext();
qResourceAdapter.start(ctx);
ActiveMQActivationSpec spec = new ActiveMQActivationSpec();
spec.setResourceAdapter(qResourceAdapter);
spec.setUseJNDI(false);
spec.setDestination("mdbTopic");
spec.setSubscriptionDurability("Durable");
spec.setSubscriptionName("sub");
spec.setSetupAttempts(1);
spec.setShareSubscriptions(true);
spec.setMaxSession(1);
CountDownLatch latch = new CountDownLatch(5);
DummyMessageEndpoint endpoint = new DummyMessageEndpoint(latch);
DummyMessageEndpointFactory endpointFactory = new DummyMessageEndpointFactory(endpoint, false);
try {
qResourceAdapter.endpointActivation(endpointFactory, spec);
fail();
}
catch (Exception e) {
assertTrue(e instanceof InvalidPropertyException);
assertEquals("clientID", ((InvalidPropertyException) e).getInvalidPropertyDescriptors()[0].getName());
}
}
@Test
public void testEmptyClientID() throws Exception {
ActiveMQResourceAdapter qResourceAdapter = newResourceAdapter();
MyBootstrapContext ctx = new MyBootstrapContext();
qResourceAdapter.start(ctx);
ActiveMQActivationSpec spec = new ActiveMQActivationSpec();
spec.setResourceAdapter(qResourceAdapter);
spec.setUseJNDI(false);
spec.setDestination("mdbTopic");
spec.setSubscriptionDurability("Durable");
spec.setSubscriptionName("sub");
spec.setClientID("");
spec.setSetupAttempts(1);
spec.setShareSubscriptions(true);
spec.setMaxSession(1);
CountDownLatch latch = new CountDownLatch(5);
DummyMessageEndpoint endpoint = new DummyMessageEndpoint(latch);
DummyMessageEndpointFactory endpointFactory = new DummyMessageEndpointFactory(endpoint, false);
try {
qResourceAdapter.endpointActivation(endpointFactory, spec);
fail();
}
catch (Exception e) {
assertTrue(e instanceof InvalidPropertyException);
assertEquals("clientID", ((InvalidPropertyException) e).getInvalidPropertyDescriptors()[0].getName());
}
}
@Test @Test
public void testBadDestinationType() throws Exception { public void testBadDestinationType() throws Exception {
ActiveMQResourceAdapter qResourceAdapter = newResourceAdapter(); ActiveMQResourceAdapter qResourceAdapter = newResourceAdapter();