mirror of https://github.com/apache/activemq.git
Make a best effort to find the correct destination name even if space padded before falling back to the fallback conversion config. git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1344894 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fd37e8c883
commit
eb887f1545
|
@ -54,7 +54,6 @@ public class LegacyFrameTranslator implements FrameTranslator {
|
||||||
if(intendedType.equalsIgnoreCase("text")){
|
if(intendedType.equalsIgnoreCase("text")){
|
||||||
ActiveMQTextMessage text = new ActiveMQTextMessage();
|
ActiveMQTextMessage text = new ActiveMQTextMessage();
|
||||||
try {
|
try {
|
||||||
//text.setText(new String(command.getContent(), "UTF-8"));
|
|
||||||
ByteArrayOutputStream bytes = new ByteArrayOutputStream(command.getContent().length + 4);
|
ByteArrayOutputStream bytes = new ByteArrayOutputStream(command.getContent().length + 4);
|
||||||
DataOutputStream data = new DataOutputStream(bytes);
|
DataOutputStream data = new DataOutputStream(bytes);
|
||||||
data.writeInt(command.getContent().length);
|
data.writeInt(command.getContent().length);
|
||||||
|
@ -79,7 +78,6 @@ public class LegacyFrameTranslator implements FrameTranslator {
|
||||||
} else {
|
} else {
|
||||||
ActiveMQTextMessage text = new ActiveMQTextMessage();
|
ActiveMQTextMessage text = new ActiveMQTextMessage();
|
||||||
try {
|
try {
|
||||||
//text.setText(new String(command.getContent(), "UTF-8"));
|
|
||||||
ByteArrayOutputStream bytes = new ByteArrayOutputStream(command.getContent().length + 4);
|
ByteArrayOutputStream bytes = new ByteArrayOutputStream(command.getContent().length + 4);
|
||||||
DataOutputStream data = new DataOutputStream(bytes);
|
DataOutputStream data = new DataOutputStream(bytes);
|
||||||
data.writeInt(command.getContent().length);
|
data.writeInt(command.getContent().length);
|
||||||
|
@ -173,7 +171,14 @@ public class LegacyFrameTranslator implements FrameTranslator {
|
||||||
public ActiveMQDestination convertDestination(ProtocolConverter converter, String name, boolean forceFallback) throws ProtocolException {
|
public ActiveMQDestination convertDestination(ProtocolConverter converter, String name, boolean forceFallback) throws ProtocolException {
|
||||||
if (name == null) {
|
if (name == null) {
|
||||||
return null;
|
return null;
|
||||||
} else if (name.startsWith("/queue/")) {
|
}
|
||||||
|
|
||||||
|
// in case of space padding by a client we trim for the initial detection, on fallback use
|
||||||
|
// the un-trimmed value.
|
||||||
|
String originalName = name;
|
||||||
|
name = name.trim();
|
||||||
|
|
||||||
|
if (name.startsWith("/queue/")) {
|
||||||
String qName = name.substring("/queue/".length(), name.length());
|
String qName = name.substring("/queue/".length(), name.length());
|
||||||
return ActiveMQDestination.createDestination(qName, ActiveMQDestination.QUEUE_TYPE);
|
return ActiveMQDestination.createDestination(qName, ActiveMQDestination.QUEUE_TYPE);
|
||||||
} else if (name.startsWith("/topic/")) {
|
} else if (name.startsWith("/topic/")) {
|
||||||
|
@ -192,16 +197,16 @@ public class LegacyFrameTranslator implements FrameTranslator {
|
||||||
} else {
|
} else {
|
||||||
if (forceFallback) {
|
if (forceFallback) {
|
||||||
try {
|
try {
|
||||||
ActiveMQDestination fallback = ActiveMQDestination.getUnresolvableDestinationTransformer().transform(name);
|
ActiveMQDestination fallback = ActiveMQDestination.getUnresolvableDestinationTransformer().transform(originalName);
|
||||||
if (fallback != null) {
|
if (fallback != null) {
|
||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
} catch (JMSException e) {
|
} catch (JMSException e) {
|
||||||
throw new ProtocolException("Illegal destination name: [" + name + "] -- ActiveMQ STOMP destinations "
|
throw new ProtocolException("Illegal destination name: [" + originalName + "] -- ActiveMQ STOMP destinations "
|
||||||
+ "must begin with one of: /queue/ /topic/ /temp-queue/ /temp-topic/", false, e);
|
+ "must begin with one of: /queue/ /topic/ /temp-queue/ /temp-topic/", false, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new ProtocolException("Illegal destination name: [" + name + "] -- ActiveMQ STOMP destinations "
|
throw new ProtocolException("Illegal destination name: [" + originalName + "] -- ActiveMQ STOMP destinations "
|
||||||
+ "must begin with one of: /queue/ /topic/ /temp-queue/ /temp-topic/");
|
+ "must begin with one of: /queue/ /topic/ /temp-queue/ /temp-topic/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue