summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java227
1 files changed, 97 insertions, 130 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java b/java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java
index 799a38af5a..1681958a38 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/filter/UnaryExpression.java
@@ -35,32 +35,24 @@ import org.apache.qpid.server.queue.Filterable;
/**
* An expression which performs an operation on two expression values
*/
-public abstract class UnaryExpression<E extends Exception> implements Expression<E>
-{
+public abstract class UnaryExpression<E extends Exception> implements Expression<E> {
private static final BigDecimal BD_LONG_MIN_VALUE = BigDecimal.valueOf(Long.MIN_VALUE);
protected Expression<E> right;
- public static<E extends Exception> Expression<E> createNegate(Expression<E> left)
- {
+ public static <E extends Exception> Expression<E> createNegate(Expression<E> left) {
return new NegativeExpression(left);
}
- public static<E extends Exception> BooleanExpression createInExpression(PropertyExpression<E> right, List elements, final boolean not)
- {
+ public static <E extends Exception> BooleanExpression createInExpression(PropertyExpression<E> right, List elements, final boolean not) {
// Use a HashSet if there are many elements.
Collection t;
- if (elements.size() == 0)
- {
+ if (elements.size() == 0) {
t = null;
- }
- else if (elements.size() < 5)
- {
+ } else if (elements.size() < 5) {
t = elements;
- }
- else
- {
+ } else {
t = new HashSet(elements);
}
@@ -69,63 +61,53 @@ public abstract class UnaryExpression<E extends Exception> implements Expression
return new InExpression(right, inList, not);
}
- abstract static class BooleanUnaryExpression<E extends Exception> extends UnaryExpression<E> implements BooleanExpression<E>
- {
- public BooleanUnaryExpression(Expression<E> left)
- {
+ abstract static class BooleanUnaryExpression<E extends Exception> extends UnaryExpression<E> implements BooleanExpression<E> {
+ public BooleanUnaryExpression(Expression<E> left) {
super(left);
}
- public boolean matches(Filterable<E> message) throws E
- {
- Object object = evaluate(message);
+ public boolean matches(Filterable<E> message) throws E {
+ Object object = null;
+ try{
+ object = evaluate(message);
+ }catch(Exception ex)
+ {
+ ex.printStackTrace();
+ }
return (object != null) && (object == Boolean.TRUE);
}
}
+
;
- public static<E extends Exception> BooleanExpression<E> createNOT(BooleanExpression<E> left)
- {
+ public static <E extends Exception> BooleanExpression<E> createNOT(BooleanExpression<E> left) {
return new NotExpression(left);
}
- public static BooleanExpression createXPath(final String xpath)
- {
+ public static BooleanExpression createXPath(final String xpath) {
return new XPathExpression(xpath);
}
- public static BooleanExpression createXQuery(final String xpath)
- {
+ public static BooleanExpression createXQuery(final String xpath) {
return new XQueryExpression(xpath);
}
- public static<E extends Exception> BooleanExpression createBooleanCast(Expression<E> left)
- {
+ public static <E extends Exception> BooleanExpression createBooleanCast(Expression<E> left) {
return new BooleanCastExpression(left);
}
- private static Number negate(Number left)
- {
+ private static Number negate(Number left) {
Class clazz = left.getClass();
- if (clazz == Integer.class)
- {
+ if (clazz == Integer.class) {
return new Integer(-left.intValue());
- }
- else if (clazz == Long.class)
- {
+ } else if (clazz == Long.class) {
return new Long(-left.longValue());
- }
- else if (clazz == Float.class)
- {
+ } else if (clazz == Float.class) {
return new Float(-left.floatValue());
- }
- else if (clazz == Double.class)
- {
+ } else if (clazz == Double.class) {
return new Double(-left.doubleValue());
- }
- else if (clazz == BigDecimal.class)
- {
+ } else if (clazz == BigDecimal.class) {
// We ussually get a big deciamal when we have Long.MIN_VALUE constant in the
// Selector. Long.MIN_VALUE is too big to store in a Long as a positive so we store it
// as a Big decimal. But it gets Negated right away.. to here we try to covert it back
@@ -133,39 +115,32 @@ public abstract class UnaryExpression<E extends Exception> implements Expression
BigDecimal bd = (BigDecimal) left;
bd = bd.negate();
- if (BD_LONG_MIN_VALUE.compareTo(bd) == 0)
- {
+ if (BD_LONG_MIN_VALUE.compareTo(bd) == 0) {
return new Long(Long.MIN_VALUE);
}
return bd;
- }
- else
- {
+ } else {
throw new RuntimeException("Don't know how to negate: " + left);
}
}
- public UnaryExpression(Expression left)
- {
+ public UnaryExpression(Expression left) {
this.right = left;
}
- public Expression<E> getRight()
- {
+ public Expression<E> getRight() {
return right;
}
- public void setRight(Expression expression)
- {
+ public void setRight(Expression expression) {
right = expression;
}
/**
* @see java.lang.Object#toString()
*/
- public String toString()
- {
+ public String toString() {
return "(" + getExpressionSymbol() + " " + right.toString() + ")";
}
@@ -174,8 +149,7 @@ public abstract class UnaryExpression<E extends Exception> implements Expression
*
* @see java.lang.Object#hashCode()
*/
- public int hashCode()
- {
+ public int hashCode() {
return toString().hashCode();
}
@@ -184,11 +158,9 @@ public abstract class UnaryExpression<E extends Exception> implements Expression
*
* @see java.lang.Object#equals(java.lang.Object)
*/
- public boolean equals(Object o)
- {
+ public boolean equals(Object o) {
- if ((o == null) || !this.getClass().equals(o.getClass()))
- {
+ if ((o == null) || !this.getClass().equals(o.getClass())) {
return false;
}
@@ -204,74 +176,73 @@ public abstract class UnaryExpression<E extends Exception> implements Expression
*/
public abstract String getExpressionSymbol();
- private static class NegativeExpression<E extends Exception> extends UnaryExpression<E>
- {
- public NegativeExpression(final Expression<E> left)
- {
+ private static class NegativeExpression<E extends Exception> extends UnaryExpression<E> {
+ public NegativeExpression(final Expression<E> left) {
super(left);
}
- public Object evaluate(Filterable<E> message) throws E
- {
- Object rvalue = right.evaluate(message);
- if (rvalue == null)
+ public Object evaluate(Filterable<E> message) throws E {
+ Object rvalue = null;
+ try{
+ rvalue = right.evaluate(message);
+ }catch(Exception ex)
{
+ ex.printStackTrace();
+ }
+
+ if (rvalue == null) {
return null;
}
- if (rvalue instanceof Number)
- {
+ if (rvalue instanceof Number) {
return negate((Number) rvalue);
}
return null;
}
- public String getExpressionSymbol()
- {
+ public String getExpressionSymbol() {
return "-";
}
}
- private static class InExpression<E extends Exception> extends BooleanUnaryExpression<E>
- {
+ private static class InExpression<E extends Exception> extends BooleanUnaryExpression<E> {
private final Collection _inList;
private final boolean _not;
- public InExpression(final PropertyExpression<E> right, final Collection inList, final boolean not)
- {
+ public InExpression(final PropertyExpression<E> right, final Collection inList, final boolean not) {
super(right);
_inList = inList;
_not = not;
}
- public Object evaluate(Filterable<E> message) throws E
- {
+ public Object evaluate(Filterable<E> message) throws E {
- Object rvalue = right.evaluate(message);
- if (rvalue == null)
+ Object rvalue = null;
+ try{
+ rvalue = right.evaluate(message);
+ }
+ catch(Exception ex)
{
+ ex.printStackTrace();
+ }
+ if (rvalue == null) {
return null;
}
- if (rvalue.getClass() != String.class)
- {
+ if (rvalue.getClass() != String.class) {
return null;
}
- if (((_inList != null) && _inList.contains(rvalue)) ^ _not)
- {
+ if (((_inList != null) && _inList.contains(rvalue)) ^ _not) {
return Boolean.TRUE;
- }
- else
- {
+ } else {
return Boolean.FALSE;
}
}
- public String toString()
- {
+ public String toString() {
StringBuffer answer = new StringBuffer();
answer.append(right);
answer.append(" ");
@@ -279,11 +250,9 @@ public abstract class UnaryExpression<E extends Exception> implements Expression
answer.append(" ( ");
int count = 0;
- for (Iterator i = _inList.iterator(); i.hasNext();)
- {
+ for (Iterator i = _inList.iterator(); i.hasNext();) {
Object o = (Object) i.next();
- if (count != 0)
- {
+ if (count != 0) {
answer.append(", ");
}
@@ -296,73 +265,71 @@ public abstract class UnaryExpression<E extends Exception> implements Expression
return answer.toString();
}
- public String getExpressionSymbol()
- {
- if (_not)
- {
+ public String getExpressionSymbol() {
+ if (_not) {
return "NOT IN";
- }
- else
- {
+ } else {
return "IN";
}
}
}
- private static class NotExpression<E extends Exception> extends BooleanUnaryExpression<E>
- {
- public NotExpression(final BooleanExpression<E> left)
- {
+ private static class NotExpression<E extends Exception> extends BooleanUnaryExpression<E> {
+ public NotExpression(final BooleanExpression<E> left) {
super(left);
}
- public Object evaluate(Filterable<E> message) throws E
- {
- Boolean lvalue = (Boolean) right.evaluate(message);
- if (lvalue == null)
- {
+ public Object evaluate(Filterable<E> message) throws E {
+ Boolean lvalue = null;
+ try {
+ lvalue = (Boolean) right.evaluate(message);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+
+ }
+
+ if (lvalue == null) {
return null;
}
return lvalue.booleanValue() ? Boolean.FALSE : Boolean.TRUE;
+
}
- public String getExpressionSymbol()
- {
+ public String getExpressionSymbol() {
return "NOT";
}
}
- private static class BooleanCastExpression<E extends Exception> extends BooleanUnaryExpression<E>
- {
- public BooleanCastExpression(final Expression<E> left)
- {
+ private static class BooleanCastExpression<E extends Exception> extends BooleanUnaryExpression<E> {
+ public BooleanCastExpression(final Expression<E> left) {
super(left);
}
- public Object evaluate(Filterable<E> message) throws E
- {
- Object rvalue = right.evaluate(message);
- if (rvalue == null)
- {
+ public Object evaluate(Filterable<E> message) throws E {
+ Object rvalue = null;
+ try {
+ rvalue = right.evaluate(message);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ if (rvalue == null) {
return null;
}
- if (!rvalue.getClass().equals(Boolean.class))
- {
+ if (!rvalue.getClass().equals(Boolean.class)) {
return Boolean.FALSE;
}
return ((Boolean) rvalue).booleanValue() ? Boolean.TRUE : Boolean.FALSE;
+
}
- public String toString()
- {
+ public String toString() {
return right.toString();
}
- public String getExpressionSymbol()
- {
+ public String getExpressionSymbol() {
return "";
}
}