This closes #432
This commit is contained in:
commit
d476ca1035
|
@ -473,7 +473,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
|
||||||
else {
|
else {
|
||||||
localTopic = new ActiveMQTopic(topic.getTopicName());
|
localTopic = new ActiveMQTopic(topic.getTopicName());
|
||||||
}
|
}
|
||||||
return internalCreateSharedConsumer(localTopic, name, messageSelector, ConsumerDurability.NON_DURABLE, true);
|
return internalCreateSharedConsumer(localTopic, name, messageSelector, ConsumerDurability.NON_DURABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -523,7 +523,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
|
||||||
else {
|
else {
|
||||||
localTopic = new ActiveMQTopic(topic.getTopicName());
|
localTopic = new ActiveMQTopic(topic.getTopicName());
|
||||||
}
|
}
|
||||||
return internalCreateSharedConsumer(localTopic, name, messageSelector, ConsumerDurability.DURABLE, true);
|
return internalCreateSharedConsumer(localTopic, name, messageSelector, ConsumerDurability.DURABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ConsumerDurability {
|
enum ConsumerDurability {
|
||||||
|
@ -536,8 +536,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
|
||||||
private ActiveMQMessageConsumer internalCreateSharedConsumer(final ActiveMQDestination dest,
|
private ActiveMQMessageConsumer internalCreateSharedConsumer(final ActiveMQDestination dest,
|
||||||
final String subscriptionName,
|
final String subscriptionName,
|
||||||
String selectorString,
|
String selectorString,
|
||||||
ConsumerDurability durability,
|
ConsumerDurability durability) throws JMSException {
|
||||||
final boolean shared) throws JMSException {
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (dest.isQueue()) {
|
if (dest.isQueue()) {
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.activemq.artemis.core.protocol.stomp.v12;
|
package org.apache.activemq.artemis.core.protocol.stomp.v12;
|
||||||
|
|
||||||
import org.apache.activemq.artemis.core.protocol.stomp.FrameEventListener;
|
|
||||||
import org.apache.activemq.artemis.core.protocol.stomp.ActiveMQStompException;
|
import org.apache.activemq.artemis.core.protocol.stomp.ActiveMQStompException;
|
||||||
import org.apache.activemq.artemis.core.protocol.stomp.Stomp;
|
import org.apache.activemq.artemis.core.protocol.stomp.Stomp;
|
||||||
import org.apache.activemq.artemis.core.protocol.stomp.StompConnection;
|
import org.apache.activemq.artemis.core.protocol.stomp.StompConnection;
|
||||||
|
@ -30,7 +29,7 @@ import org.apache.activemq.artemis.core.server.ServerMessage;
|
||||||
|
|
||||||
import static org.apache.activemq.artemis.core.protocol.stomp.ActiveMQStompProtocolMessageBundle.BUNDLE;
|
import static org.apache.activemq.artemis.core.protocol.stomp.ActiveMQStompProtocolMessageBundle.BUNDLE;
|
||||||
|
|
||||||
public class StompFrameHandlerV12 extends StompFrameHandlerV11 implements FrameEventListener {
|
public class StompFrameHandlerV12 extends StompFrameHandlerV11 {
|
||||||
|
|
||||||
public StompFrameHandlerV12(StompConnection connection) {
|
public StompFrameHandlerV12(StompConnection connection) {
|
||||||
super(connection);
|
super(connection);
|
||||||
|
|
|
@ -158,7 +158,7 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(Filterable message) throws FilterException {
|
public boolean matches(Filterable message) throws FilterException {
|
||||||
Object object = evaluate(message);
|
Object object = evaluate(message);
|
||||||
return object != null && object == Boolean.TRUE;
|
return object == Boolean.TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,19 +392,19 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
|
||||||
}
|
}
|
||||||
else if (lc == Byte.class) {
|
else if (lc == Byte.class) {
|
||||||
if (rc == Short.class) {
|
if (rc == Short.class) {
|
||||||
lv = Short.valueOf(((Number) lv).shortValue());
|
lv = ((Number) lv).shortValue();
|
||||||
}
|
}
|
||||||
else if (rc == Integer.class) {
|
else if (rc == Integer.class) {
|
||||||
lv = Integer.valueOf(((Number) lv).intValue());
|
lv = ((Number) lv).intValue();
|
||||||
}
|
}
|
||||||
else if (rc == Long.class) {
|
else if (rc == Long.class) {
|
||||||
lv = Long.valueOf(((Number) lv).longValue());
|
lv = ((Number) lv).longValue();
|
||||||
}
|
}
|
||||||
else if (rc == Float.class) {
|
else if (rc == Float.class) {
|
||||||
lv = new Float(((Number) lv).floatValue());
|
lv = ((Number) lv).floatValue();
|
||||||
}
|
}
|
||||||
else if (rc == Double.class) {
|
else if (rc == Double.class) {
|
||||||
lv = new Double(((Number) lv).doubleValue());
|
lv = ((Number) lv).doubleValue();
|
||||||
}
|
}
|
||||||
else if (convertStringExpressions && rc == String.class) {
|
else if (convertStringExpressions && rc == String.class) {
|
||||||
rv = Byte.valueOf((String) rv);
|
rv = Byte.valueOf((String) rv);
|
||||||
|
@ -415,16 +415,16 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
|
||||||
}
|
}
|
||||||
else if (lc == Short.class) {
|
else if (lc == Short.class) {
|
||||||
if (rc == Integer.class) {
|
if (rc == Integer.class) {
|
||||||
lv = Integer.valueOf(((Number) lv).intValue());
|
lv = ((Number) lv).intValue();
|
||||||
}
|
}
|
||||||
else if (rc == Long.class) {
|
else if (rc == Long.class) {
|
||||||
lv = Long.valueOf(((Number) lv).longValue());
|
lv = ((Number) lv).longValue();
|
||||||
}
|
}
|
||||||
else if (rc == Float.class) {
|
else if (rc == Float.class) {
|
||||||
lv = new Float(((Number) lv).floatValue());
|
lv = ((Number) lv).floatValue();
|
||||||
}
|
}
|
||||||
else if (rc == Double.class) {
|
else if (rc == Double.class) {
|
||||||
lv = new Double(((Number) lv).doubleValue());
|
lv = ((Number) lv).doubleValue();
|
||||||
}
|
}
|
||||||
else if (convertStringExpressions && rc == String.class) {
|
else if (convertStringExpressions && rc == String.class) {
|
||||||
rv = Short.valueOf((String) rv);
|
rv = Short.valueOf((String) rv);
|
||||||
|
@ -435,13 +435,13 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
|
||||||
}
|
}
|
||||||
else if (lc == Integer.class) {
|
else if (lc == Integer.class) {
|
||||||
if (rc == Long.class) {
|
if (rc == Long.class) {
|
||||||
lv = Long.valueOf(((Number) lv).longValue());
|
lv = ((Number) lv).longValue();
|
||||||
}
|
}
|
||||||
else if (rc == Float.class) {
|
else if (rc == Float.class) {
|
||||||
lv = new Float(((Number) lv).floatValue());
|
lv = ((Number) lv).floatValue();
|
||||||
}
|
}
|
||||||
else if (rc == Double.class) {
|
else if (rc == Double.class) {
|
||||||
lv = new Double(((Number) lv).doubleValue());
|
lv = ((Number) lv).doubleValue();
|
||||||
}
|
}
|
||||||
else if (convertStringExpressions && rc == String.class) {
|
else if (convertStringExpressions && rc == String.class) {
|
||||||
rv = Integer.valueOf((String) rv);
|
rv = Integer.valueOf((String) rv);
|
||||||
|
@ -452,13 +452,13 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
|
||||||
}
|
}
|
||||||
else if (lc == Long.class) {
|
else if (lc == Long.class) {
|
||||||
if (rc == Integer.class) {
|
if (rc == Integer.class) {
|
||||||
rv = Long.valueOf(((Number) rv).longValue());
|
rv = ((Number) rv).longValue();
|
||||||
}
|
}
|
||||||
else if (rc == Float.class) {
|
else if (rc == Float.class) {
|
||||||
lv = new Float(((Number) lv).floatValue());
|
lv = ((Number) lv).floatValue();
|
||||||
}
|
}
|
||||||
else if (rc == Double.class) {
|
else if (rc == Double.class) {
|
||||||
lv = new Double(((Number) lv).doubleValue());
|
lv = ((Number) lv).doubleValue();
|
||||||
}
|
}
|
||||||
else if (convertStringExpressions && rc == String.class) {
|
else if (convertStringExpressions && rc == String.class) {
|
||||||
rv = Long.valueOf((String) rv);
|
rv = Long.valueOf((String) rv);
|
||||||
|
@ -468,14 +468,11 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (lc == Float.class) {
|
else if (lc == Float.class) {
|
||||||
if (rc == Integer.class) {
|
if (rc == Integer.class || rc == Long.class) {
|
||||||
rv = new Float(((Number) rv).floatValue());
|
rv = ((Number) rv).floatValue();
|
||||||
}
|
|
||||||
else if (rc == Long.class) {
|
|
||||||
rv = new Float(((Number) rv).floatValue());
|
|
||||||
}
|
}
|
||||||
else if (rc == Double.class) {
|
else if (rc == Double.class) {
|
||||||
lv = new Double(((Number) lv).doubleValue());
|
lv = ((Number) lv).doubleValue();
|
||||||
}
|
}
|
||||||
else if (convertStringExpressions && rc == String.class) {
|
else if (convertStringExpressions && rc == String.class) {
|
||||||
rv = Float.valueOf((String) rv);
|
rv = Float.valueOf((String) rv);
|
||||||
|
@ -485,14 +482,8 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (lc == Double.class) {
|
else if (lc == Double.class) {
|
||||||
if (rc == Integer.class) {
|
if (rc == Integer.class || rc == Long.class || rc == Float.class) {
|
||||||
rv = new Double(((Number) rv).doubleValue());
|
rv = ((Number) rv).doubleValue();
|
||||||
}
|
|
||||||
else if (rc == Long.class) {
|
|
||||||
rv = new Double(((Number) rv).doubleValue());
|
|
||||||
}
|
|
||||||
else if (rc == Float.class) {
|
|
||||||
rv = new Double(((Number) rv).doubleValue());
|
|
||||||
}
|
}
|
||||||
else if (convertStringExpressions && rc == String.class) {
|
else if (convertStringExpressions && rc == String.class) {
|
||||||
rv = Double.valueOf((String) rv);
|
rv = Double.valueOf((String) rv);
|
||||||
|
@ -545,7 +536,7 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(Filterable message) throws FilterException {
|
public boolean matches(Filterable message) throws FilterException {
|
||||||
Object object = evaluate(message);
|
Object object = evaluate(message);
|
||||||
return object != null && object == Boolean.TRUE;
|
return object == Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ public abstract class LogicExpression extends BinaryExpression implements Boolea
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(Filterable message) throws FilterException {
|
public boolean matches(Filterable message) throws FilterException {
|
||||||
Object object = evaluate(message);
|
Object object = evaluate(message);
|
||||||
return object != null && object == Boolean.TRUE;
|
return object == Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,13 +86,7 @@ public abstract class UnaryExpression implements Expression {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((inList != null && inList.contains(rvalue)) ^ not) {
|
return (inList != null && inList.contains(rvalue)) ^ not;
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return Boolean.FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -138,7 +132,7 @@ public abstract class UnaryExpression implements Expression {
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(Filterable message) throws FilterException {
|
public boolean matches(Filterable message) throws FilterException {
|
||||||
Object object = evaluate(message);
|
Object object = evaluate(message);
|
||||||
return object != null && object == Boolean.TRUE;
|
return object == Boolean.TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +144,7 @@ public abstract class UnaryExpression implements Expression {
|
||||||
if (lvalue == null) {
|
if (lvalue == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return lvalue.booleanValue() ? Boolean.FALSE : Boolean.TRUE;
|
return !lvalue.booleanValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -179,7 +173,7 @@ public abstract class UnaryExpression implements Expression {
|
||||||
if (!rvalue.getClass().equals(Boolean.class)) {
|
if (!rvalue.getClass().equals(Boolean.class)) {
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
return ((Boolean) rvalue).booleanValue() ? Boolean.TRUE : Boolean.FALSE;
|
return ((Boolean) rvalue).booleanValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -197,16 +191,16 @@ public abstract class UnaryExpression implements Expression {
|
||||||
private static Number negate(Number left) {
|
private static Number negate(Number left) {
|
||||||
Class clazz = left.getClass();
|
Class clazz = left.getClass();
|
||||||
if (clazz == Integer.class) {
|
if (clazz == Integer.class) {
|
||||||
return new Integer(-left.intValue());
|
return -left.intValue();
|
||||||
}
|
}
|
||||||
else if (clazz == Long.class) {
|
else if (clazz == Long.class) {
|
||||||
return new Long(-left.longValue());
|
return -left.longValue();
|
||||||
}
|
}
|
||||||
else if (clazz == Float.class) {
|
else if (clazz == Float.class) {
|
||||||
return new Float(-left.floatValue());
|
return -left.floatValue();
|
||||||
}
|
}
|
||||||
else if (clazz == Double.class) {
|
else if (clazz == Double.class) {
|
||||||
return new Double(-left.doubleValue());
|
return -left.doubleValue();
|
||||||
}
|
}
|
||||||
else if (clazz == BigDecimal.class) {
|
else if (clazz == BigDecimal.class) {
|
||||||
// We ussually get a big deciamal when we have Long.MIN_VALUE
|
// We ussually get a big deciamal when we have Long.MIN_VALUE
|
||||||
|
|
|
@ -77,7 +77,7 @@ public final class XPathExpression implements BooleanExpression {
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(Filterable message) throws FilterException {
|
public boolean matches(Filterable message) throws FilterException {
|
||||||
Object object = evaluate(message);
|
Object object = evaluate(message);
|
||||||
return object != null && object == Boolean.TRUE;
|
return object == Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ public final class XQueryExpression implements BooleanExpression {
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(Filterable message) throws FilterException {
|
public boolean matches(Filterable message) throws FilterException {
|
||||||
Object object = evaluate(message);
|
Object object = evaluate(message);
|
||||||
return object != null && object == Boolean.TRUE;
|
return object == Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -265,13 +265,11 @@ public final class BindingsImpl implements Bindings {
|
||||||
|
|
||||||
boolean routed = false;
|
boolean routed = false;
|
||||||
|
|
||||||
if (!exclusiveBindings.isEmpty()) {
|
for (Binding binding : exclusiveBindings) {
|
||||||
for (Binding binding : exclusiveBindings) {
|
if (binding.getFilter() == null || binding.getFilter().match(message)) {
|
||||||
if (binding.getFilter() == null || binding.getFilter().match(message)) {
|
binding.getBindable().route(message, context);
|
||||||
binding.getBindable().route(message, context);
|
|
||||||
|
|
||||||
routed = true;
|
routed = true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue