Skip to content

Commit 0332f81

Browse files
committed
Activate subscription name validation
Section A.3.16 in the JMS 3.0 specification. https://jakarta.ee/specifications/messaging/3.1/jakarta-messaging-spec-3.1.html#subscription-name-characters-and-length-2 Fixes #204
1 parent b405f61 commit 0332f81

File tree

6 files changed

+10
-58
lines changed

6 files changed

+10
-58
lines changed

src/main/java/com/rabbitmq/jms/admin/RMQConnectionFactory.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -240,14 +240,6 @@ public class RMQConnectionFactory implements ConnectionFactory, Referenceable, S
240240
*/
241241
private boolean declareReplyToDestination = true;
242242

243-
/**
244-
* Whether to validate subscription names or not, according to JMS 2.0. Default is false (no
245-
* validation).
246-
*
247-
* @since 2.7.0
248-
*/
249-
private boolean validateSubscriptionNames = false;
250-
251243
/**
252244
* {@inheritDoc}
253245
*/
@@ -328,7 +320,6 @@ protected Connection createConnection(String username, String password, Connecti
328320
.setTrustedPackages(this.trustedPackages)
329321
.setRequeueOnTimeout(this.requeueOnTimeout)
330322
.setKeepTextMessageType(this.keepTextMessageType)
331-
.setValidateSubscriptionNames(this.validateSubscriptionNames)
332323
);
333324
logger.debug("Connection {} created.", conn);
334325
return conn;
@@ -1061,16 +1052,6 @@ public void setKeepTextMessageType(boolean keepTextMessageType) {
10611052
this.keepTextMessageType = keepTextMessageType;
10621053
}
10631054

1064-
/**
1065-
* Whether to validate subscription names or not, according to JMS 2.0. Default is false (no
1066-
* validation).
1067-
*
1068-
* @since 2.7.0
1069-
*/
1070-
public void setValidateSubscriptionNames(boolean validateSubscriptionNames) {
1071-
this.validateSubscriptionNames = validateSubscriptionNames;
1072-
}
1073-
10741055
@FunctionalInterface
10751056
private interface ConnectionCreator {
10761057
com.rabbitmq.client.Connection create(com.rabbitmq.client.ConnectionFactory cf) throws Exception;

src/main/java/com/rabbitmq/jms/client/ConnectionParams.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ public class ConnectionParams {
110110

111111
private List<String> trustedPackages = WhiteListObjectInputStream.DEFAULT_TRUSTED_PACKAGES;
112112

113-
private boolean validateSubscriptionNames = false;
114-
115113
public Connection getRabbitConnection() {
116114
return rabbitConnection;
117115
}
@@ -247,12 +245,4 @@ public boolean willRequeueOnTimeout() {
247245
return requeueOnTimeout;
248246
}
249247

250-
public ConnectionParams setValidateSubscriptionNames(boolean validateSubscriptionNames) {
251-
this.validateSubscriptionNames = validateSubscriptionNames;
252-
return this;
253-
}
254-
255-
public boolean isValidateSubscriptionNames() {
256-
return validateSubscriptionNames;
257-
}
258248
}

src/main/java/com/rabbitmq/jms/client/RMQConnection.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,6 @@ public class RMQConnection implements Connection, QueueConnection, TopicConnecti
152152

153153
private final boolean keepTextMessageType;
154154

155-
private final boolean validateSubscriptionNames;
156-
157155
/**
158156
* Creates an RMQConnection object.
159157
* @param connectionParams parameters for this connection
@@ -180,7 +178,6 @@ public RMQConnection(ConnectionParams connectionParams) {
180178
this.trustedPackages = connectionParams.getTrustedPackages();
181179
this.requeueOnTimeout = connectionParams.willRequeueOnTimeout();
182180
this.keepTextMessageType = connectionParams.isKeepTextMessageType();
183-
this.validateSubscriptionNames = connectionParams.isValidateSubscriptionNames();
184181
}
185182

186183
/**
@@ -236,7 +233,6 @@ public Session createSession(boolean transacted, int acknowledgeMode) throws JMS
236233
.setTrustedPackages(this.trustedPackages)
237234
.setRequeueOnTimeout(this.requeueOnTimeout)
238235
.setKeepTextMessageType(this.keepTextMessageType)
239-
.setValidateSubscriptionNames(this.validateSubscriptionNames)
240236
);
241237
this.sessions.add(session);
242238
return session;

src/main/java/com/rabbitmq/jms/client/RMQSession.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -248,20 +248,16 @@ public RMQSession(SessionParams sessionParams) throws JMSException {
248248
this.trustedPackages = sessionParams.getTrustedPackages();
249249
this.requeueOnTimeout = sessionParams.willRequeueOnTimeout();
250250
this.keepTextMessageType = sessionParams.isKeepTextMessageType();
251-
if (sessionParams.isValidateSubscriptionNames()) {
252-
this.subscriptionNameValidator = name -> {
253-
boolean subscriptionIsValid = Utils.SUBSCRIPTION_NAME_PREDICATE.test(name);
254-
if (!subscriptionIsValid) {
255-
// the specification is not clear on which exception to throw when the
256-
// subscription name is not valid, so throwing a JMSException.
257-
throw new JMSException("This subscription name is not valid: " + name + ". "
258-
+ "It must not be more than 128 characters and should contain only "
259-
+ "Java letters, digits, '_', '.', and '-'.");
260-
}
261-
};
262-
} else {
263-
this.subscriptionNameValidator = name -> { };
264-
}
251+
this.subscriptionNameValidator = name -> {
252+
boolean subscriptionIsValid = Utils.SUBSCRIPTION_NAME_PREDICATE.test(name);
253+
if (!subscriptionIsValid) {
254+
// the specification is not clear on which exception to throw when the
255+
// subscription name is not valid, so throwing a JMSException.
256+
throw new JMSException("This subscription name is not valid: " + name + ". "
257+
+ "It must not be more than 128 characters and should contain only "
258+
+ "Java letters, digits, '_', '.', and '-'.");
259+
}
260+
};
265261

266262
if (transacted) {
267263
this.acknowledgeMode = Session.SESSION_TRANSACTED;

src/main/java/com/rabbitmq/jms/client/SessionParams.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,6 @@ public class SessionParams {
103103

104104
private boolean keepTextMessageType = false;
105105

106-
private boolean validateSubscriptionNames = false;
107-
108106
private List<String> trustedPackages = WhiteListObjectInputStream.DEFAULT_TRUSTED_PACKAGES;
109107

110108
public RMQConnection getConnection() {
@@ -242,12 +240,4 @@ public boolean willRequeueOnTimeout() {
242240
return requeueOnTimeout;
243241
}
244242

245-
public SessionParams setValidateSubscriptionNames(boolean validateSubscriptionNames) {
246-
this.validateSubscriptionNames = validateSubscriptionNames;
247-
return this;
248-
}
249-
250-
public boolean isValidateSubscriptionNames() {
251-
return validateSubscriptionNames;
252-
}
253243
}

src/test/java/com/rabbitmq/integration/tests/SimpleDurableTopicMessageIT.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ public class SimpleDurableTopicMessageIT extends AbstractITTopic {
4444
@Override
4545
protected void customise(RMQConnectionFactory connectionFactory) {
4646
super.customise(connectionFactory);
47-
connectionFactory.setValidateSubscriptionNames(true);
4847
}
4948

5049
@Test

0 commit comments

Comments
 (0)