qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kw...@apache.org
Subject svn commit: r1739559 - in /qpid/java/trunk/broker-plugins/management-http/src: main/java/org/apache/qpid/server/management/plugin/servlet/query/ test/java/org/apache/qpid/server/management/plugin/servlet/query/
Date Sun, 17 Apr 2016 09:06:14 GMT
Author: kwall
Date: Sun Apr 17 09:06:13 2016
New Revision: 1739559

URL: http://svn.apache.org/viewvc?rev=1739559&view=rev
Log:
QPID-7177: [Java Broker] Configured Object search - add DATE_ADD, TO_STRING

* DATE_ADD takes a ISO 8601 format duration e.g. -PT10H (minus ten hours)
* TO_STRING can format objects using an optional printf style formatting.  For dates an optional
timezone may be included too.

Added:
    qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/EvaluationException.java
Modified:
    qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java
    qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQuery.java
    qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ParseException.java
    qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java?rev=1739559&r1=1739558&r2=1739559&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java
(original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java
Sun Apr 17 09:06:13 2016
@@ -29,10 +29,15 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.TimeZone;
 
 import javax.xml.bind.DatatypeConverter;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
 
 import org.apache.qpid.filter.Expression;
+import org.apache.qpid.filter.SelectorParsingException;
 import org.apache.qpid.server.model.ConfiguredObject;
 
 public class ConfiguredObjectExpressionFactory
@@ -40,7 +45,20 @@ public class ConfiguredObjectExpressionF
 
     private static final String PARENT_ATTR = "$parent";
     private static Set<String> SPECIAL_ATTRIBUTES = new HashSet<>(Arrays.asList(PARENT_ATTR));
+    private static final TimeZone UTC = TimeZone.getTimeZone("UTC");
+    private static final DatatypeFactory DATATYPE_FACTORY;
 
+    static
+    {
+        try
+        {
+            DATATYPE_FACTORY = DatatypeFactory.newInstance();
+        }
+        catch (DatatypeConfigurationException e)
+        {
+            throw new ExceptionInInitializerError(e);
+        }
+    }
 
     enum FilterFunction
     {
@@ -83,8 +101,7 @@ public class ConfiguredObjectExpressionF
             }
         },
 
-        TO_DATE
-                {
+        TO_DATE {
             @Override
             ConfiguredObjectExpression asExpression(final List<Expression> args)
             {
@@ -110,13 +127,100 @@ public class ConfiguredObjectExpressionF
                         }
                         catch (IllegalArgumentException e)
                         {
-                            throw new IllegalArgumentException(TO_DATE
-                                                               + " requires an ISO-8601 format
date or date/time.", e);
+                            throw new IllegalArgumentException(TO_DATE + " requires an ISO-8601
format date or date/time.", e);
                         }
                     }
                 };
             }
 
+        },
+
+        DATE_ADD {
+            @Override
+            ConfiguredObjectExpression asExpression (final List<Expression> args)
+            {
+                if (args == null || args.size() != 2)
+                {
+                    throw new IllegalArgumentException(DATE_ADD.name() + " requires two arguments.");
+                }
+
+                return new ConfiguredObjectExpression()
+                {
+                    @Override
+                    public Object evaluate(final ConfiguredObject<?> object)
+                    {
+                        Object date = args.get(0).evaluate(object);
+                        Object period = args.get(1).evaluate(object);
+                        if (!(date instanceof Date) || !(period instanceof String))
+                        {
+                            throw new IllegalArgumentException(String.format("%s requires
a (Date, String) not a"
+                                                                             + " (%s,%s)",
+                                                                             DATE_ADD,
+                                                                             date.getClass().getSimpleName(),
+                                                                             period.getClass().getSimpleName()));
+                        }
+                        try
+                        {
+                            Date copy = new Date(((Date) date).getTime());
+                            final Duration duration = DATATYPE_FACTORY.newDuration((String)
period);
+                            duration.addTo(copy);
+                            return copy;
+                        }
+                        catch (IllegalArgumentException e)
+                        {
+                            throw new IllegalArgumentException(DATE_ADD + " requires an ISO-8601
format duration.", e);
+                        }
+                    }
+                };
+            }
+        },
+
+        TO_STRING {
+            @Override
+            ConfiguredObjectExpression asExpression(final List<Expression> args)
+            {
+                if (args == null || (args.size() == 0 || args.size() > 3))
+                {
+                    throw new IllegalArgumentException(TO_STRING.name() + " requires (Object[,{printf
format specifier},[{timezone name}]]).");
+                }
+
+                return new ConfiguredObjectExpression()
+                {
+                    @Override
+                    public Object evaluate(final ConfiguredObject<?> object)
+                    {
+                        Object obj = args.get(0).evaluate(object);
+                        Object format = args.size() > 1 ? args.get(1).evaluate(object)
: null;
+                        Object timezoneName = args.size() > 2 ? args.get(2).evaluate(object)
: null;
+                        if (obj instanceof Date)
+                        {
+                            final Calendar cal = timezoneName == null ? Calendar.getInstance(UTC)
: Calendar.getInstance(TimeZone.getTimeZone(
+                                    (String) timezoneName));
+                            cal.setTime((Date) obj);
+                            if (format == null)
+                            {
+                                return DatatypeConverter.printDateTime(cal);
+                            }
+                            else
+                            {
+                                return String.format((String)format, cal);
+                            }
+                        }
+                        else
+                        {
+                            // TODO If obj itself is another configured object perhaps we
should just use its name or id? The CO.toString value probably isn't too useful.
+                            if (format == null)
+                            {
+                                return String.valueOf(obj);
+                            }
+                            else
+                            {
+                                return String.format((String)format, obj);
+                            }
+                        }
+                    }
+                };
+            }
         };
 
         abstract ConfiguredObjectExpression asExpression( List<Expression> args );
@@ -146,12 +250,20 @@ public class ConfiguredObjectExpressionF
     {
         try
         {
-            FilterFunction function = FilterFunction.valueOf(functionName.toUpperCase());
+            FilterFunction function = null;
+            try
+            {
+                function = FilterFunction.valueOf(functionName.toUpperCase());
+            }
+            catch (IllegalArgumentException e)
+            {
+                throw new ParseException("Unknown function name : '" + functionName + "'");
+            }
             return function.asExpression(args);
         }
         catch(IllegalArgumentException e)
         {
-            throw new ParseException("Unknown function name " + functionName);
+            throw new ParseException("Function parameter mismatch : '" + functionName + "'",
e);
         }
     }
 

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQuery.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQuery.java?rev=1739559&r1=1739558&r2=1739559&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQuery.java
(original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQuery.java
Sun Apr 17 09:06:13 2016
@@ -93,7 +93,7 @@ public final class ConfiguredObjectQuery
             }
             catch (ParseException | TokenMgrError e)
             {
-                throw new SelectorParsingException("Unable to parse select clause");
+                throw new SelectorParsingException("Unable to parse select clause", e);
             }
         }
         else
@@ -142,7 +142,7 @@ public final class ConfiguredObjectQuery
                 }
                 catch (RuntimeException e)
                 {
-                    LOGGER.debug("Error while evaluating object against where clause", e);
+                    throw new EvaluationException("Error while evaluating object against
where clause", e);
                 }
             }
 

Added: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/EvaluationException.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/EvaluationException.java?rev=1739559&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/EvaluationException.java
(added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/EvaluationException.java
Sun Apr 17 09:06:13 2016
@@ -0,0 +1,30 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.server.management.plugin.servlet.query;
+
+public class EvaluationException extends RuntimeException
+{
+    public EvaluationException(final String s, final RuntimeException e)
+    {
+        super(s,e);
+    }
+}

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ParseException.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ParseException.java?rev=1739559&r1=1739558&r2=1739559&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ParseException.java
(original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ParseException.java
Sun Apr 17 09:06:13 2016
@@ -77,6 +77,10 @@ public class ParseException extends Exce
     super(message);
   }
 
+  public ParseException(String message, Throwable t) {
+        super(message, t);
+    }
+
 
   /**
    * This is the last token that has been consumed successfully.  If

Modified: qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java?rev=1739559&r1=1739558&r2=1739559&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java
(original)
+++ qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java
Sun Apr 17 09:06:13 2016
@@ -26,7 +26,6 @@ import static org.mockito.Mockito.when;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
-import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -39,6 +38,7 @@ import javax.xml.bind.DatatypeConverter;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
+import org.apache.qpid.filter.SelectorParsingException;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.test.utils.QpidTestCase;
 
@@ -47,12 +47,11 @@ public class ConfiguredObjectQueryTest e
     private static final String NUMBER_ATTR = "numberAttr";
     private static final String DATE_ATTR = "dateAttr";
 
+    private final List<ConfiguredObject<?>> _objects = new ArrayList<>();
     private ConfiguredObjectQuery _query;
 
-    public void testSingleResultNoClauses() throws Exception
+    public void testNoClauses_SingleResult() throws Exception
     {
-        final List<ConfiguredObject<?>> objects = new ArrayList<>();
-
         final UUID objectUuid = UUID.randomUUID();
         final String objectName = "obj1";
 
@@ -62,9 +61,9 @@ public class ConfiguredObjectQueryTest e
             put(ConfiguredObject.NAME, objectName);
         }});
 
-        objects.add(obj1);
+        _objects.add(obj1);
 
-        _query = new ConfiguredObjectQuery(objects, null, null);
+        _query = new ConfiguredObjectQuery(_objects, null, null);
 
         final List<String> headers = _query.getHeaders();
         assertEquals("Unexpected headers", Lists.newArrayList(ConfiguredObject.ID, ConfiguredObject.NAME),
headers);
@@ -76,10 +75,8 @@ public class ConfiguredObjectQueryTest e
         assertEquals("Unexpected row", Lists.newArrayList(objectUuid, objectName), row);
     }
 
-    public void testTwoResultNoClauses() throws Exception
+    public void testNoClauses_TwoResult() throws Exception
     {
-        final List<ConfiguredObject<?>> objects = new ArrayList<>();
-
         final UUID object1Uuid = UUID.randomUUID();
         final String object1Name = "obj1";
 
@@ -98,10 +95,10 @@ public class ConfiguredObjectQueryTest e
             put(ConfiguredObject.NAME, object2Name);
         }});
 
-        objects.add(obj1);
-        objects.add(obj2);
+        _objects.add(obj1);
+        _objects.add(obj2);
 
-        _query = new ConfiguredObjectQuery(objects, null, null);
+        _query = new ConfiguredObjectQuery(_objects, null, null);
 
         List<List<Object>> results = _query.getResults();
         assertEquals("Unexpected number of results", 2, results.size());
@@ -114,10 +111,63 @@ public class ConfiguredObjectQueryTest e
         assertEquals("Unexpected row", Lists.newArrayList(object2Uuid, object2Name), row2);
     }
 
-    public void testQuery_StringEquality() throws Exception
+    public void testSelectClause() throws Exception
     {
-        final List<ConfiguredObject<?>> objects = new ArrayList<>();
+        final UUID objectUuid = UUID.randomUUID();
+
+        ConfiguredObject obj = createCO(new HashMap<String, Object>()
+        {{
+            put(ConfiguredObject.ID, objectUuid);
+            put(NUMBER_ATTR, 1234);
+        }});
+
+        _objects.add(obj);
+
+        _query = new ConfiguredObjectQuery(_objects,
+                                           String.format("%s,%s", ConfiguredObject.ID, NUMBER_ATTR),
+                                           null);
+
+        List<List<Object>> results = _query.getResults();
+        assertEquals("Unexpected number of results", 1, results.size());
+
+        final List<String> headers = _query.getHeaders();
+        assertEquals("Unexpected headers", Lists.newArrayList(ConfiguredObject.ID, NUMBER_ATTR),
headers);
+
+        final Iterator<List<Object>> iterator = results.iterator();
+        List<Object> row = iterator.next();
+        assertEquals("Unexpected row", Lists.newArrayList(objectUuid, 1234), row);
+    }
+
+    public void testSelectClause_ColumnAliases() throws Exception
+    {
+        final UUID objectUuid = UUID.randomUUID();
+
+        ConfiguredObject obj = createCO(new HashMap<String, Object>()
+        {{
+            put(ConfiguredObject.ID, objectUuid);
+            put(ConfiguredObject.NAME, "myObj");
+            put(NUMBER_ATTR, 1234);
+        }});
+
+        _objects.add(obj);
 
+        _query = new ConfiguredObjectQuery(_objects,
+                                           String.format("%s,CONCAT(%s,%s) AS alias", ConfiguredObject.ID,
ConfiguredObject.NAME, NUMBER_ATTR),
+                                           null);
+
+        List<List<Object>> results = _query.getResults();
+        assertEquals("Unexpected number of results", 1, results.size());
+
+        final List<String> headers = _query.getHeaders();
+        assertEquals("Unexpected headers", Lists.newArrayList(ConfiguredObject.ID, "alias"),
headers);
+
+        final Iterator<List<Object>> iterator = results.iterator();
+        List<Object> row = iterator.next();
+        assertEquals("Unexpected row", Lists.newArrayList(objectUuid, "myObj1234"), row);
+    }
+
+    public void testQuery_StringEquality() throws Exception
+    {
         final UUID objectUuid = UUID.randomUUID();
         final String objectName = "obj2";
 
@@ -133,10 +183,10 @@ public class ConfiguredObjectQueryTest e
             put(ConfiguredObject.NAME, objectName);
         }});
 
-        objects.add(nonMatch);
-        objects.add(match);
+        _objects.add(nonMatch);
+        _objects.add(match);
 
-        _query = new ConfiguredObjectQuery(objects, null, String.format("name = '%s'", objectName));
+        _query = new ConfiguredObjectQuery(_objects, null, String.format("name = '%s'", objectName));
 
         final List<String> headers = _query.getHeaders();
         assertEquals("Unexpected headers", Lists.newArrayList(ConfiguredObject.ID, ConfiguredObject.NAME),
headers);
@@ -151,8 +201,6 @@ public class ConfiguredObjectQueryTest e
 
     public void testQuery_DateInequality() throws Exception
     {
-        final List<ConfiguredObject<?>> objects = new ArrayList<>();
-
         final long now = System.currentTimeMillis();
         final UUID objectUuid = UUID.randomUUID();
         final long oneDayInMillis = TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS);
@@ -171,10 +219,10 @@ public class ConfiguredObjectQueryTest e
             put(DATE_ATTR, tomorrow);
         }});
 
-        objects.add(nonMatch);
-        objects.add(match);
+        _objects.add(nonMatch);
+        _objects.add(match);
 
-        _query = new ConfiguredObjectQuery(objects,
+        _query = new ConfiguredObjectQuery(_objects,
                                            String.format("%s,%s", ConfiguredObject.ID, DATE_ATTR),
                                            String.format("%s > NOW()", DATE_ATTR));
 
@@ -188,11 +236,10 @@ public class ConfiguredObjectQueryTest e
 
     public void testQuery_DateEquality() throws Exception
     {
-        final List<ConfiguredObject<?>> objects = new ArrayList<>();
-
         final long now = System.currentTimeMillis();
         final Calendar calendar = Calendar.getInstance();
         calendar.setTimeInMillis(now);
+        String nowIso8601Str = DatatypeConverter.printDateTime(calendar);
 
         final UUID objectUuid = UUID.randomUUID();
 
@@ -208,12 +255,40 @@ public class ConfiguredObjectQueryTest e
             put(DATE_ATTR, new Date(now));
         }});
 
-        objects.add(nonMatch);
-        objects.add(match);
+        _objects.add(nonMatch);
+        _objects.add(match);
+
+        _query = new ConfiguredObjectQuery(_objects,
+                                           String.format("%s,%s", ConfiguredObject.ID, DATE_ATTR),
+                                           String.format("%s = TO_DATE('%s')", DATE_ATTR,
+                                                         nowIso8601Str));
+
+        List<List<Object>> results = _query.getResults();
+        assertEquals("Unexpected number of results", 1, results.size());
+
+        final Iterator<List<Object>> iterator = results.iterator();
+        List<Object> row = iterator.next();
+        assertEquals("Unexpected row", objectUuid, row.get(0));
+    }
+
+    public void testQuery_DateExpressions() throws Exception
+    {
+        final UUID objectUuid = UUID.randomUUID();
+
+        ConfiguredObject match = createCO(new HashMap<String, Object>()
+        {{
+            put(ConfiguredObject.ID, objectUuid);
+            put(DATE_ATTR, new Date(0));
+        }});
+
+        _objects.add(match);
 
-        _query = new ConfiguredObjectQuery(objects,
+        _query = new ConfiguredObjectQuery(_objects,
                                            String.format("%s,%s", ConfiguredObject.ID, DATE_ATTR),
-                                           String.format("%s = TO_DATE('%s')", DATE_ATTR,
DatatypeConverter.printDateTime(calendar)));
+                                           String.format("%s = DATE_ADD(TO_DATE('%s'), '%s')",
+                                                         DATE_ATTR,
+                                                         "1970-01-01T10:00:00Z",
+                                                         "-PT10H"));
 
         List<List<Object>> results = _query.getResults();
         assertEquals("Unexpected number of results", 1, results.size());
@@ -223,6 +298,72 @@ public class ConfiguredObjectQueryTest e
         assertEquals("Unexpected row", objectUuid, row.get(0));
     }
 
+    public void testDateToString() throws Exception
+    {
+        final UUID objectUuid = UUID.randomUUID();
+
+        ConfiguredObject match = createCO(new HashMap<String, Object>()
+        {{
+            put(ConfiguredObject.ID, objectUuid);
+            put(DATE_ATTR, new Date(0));
+        }});
+
+        _objects.add(match);
+
+        _query = new ConfiguredObjectQuery(_objects,
+                                           String.format("%s, TO_STRING(%s)", ConfiguredObject.ID,
DATE_ATTR),
+                                           null);
+
+        List<List<Object>> results = _query.getResults();
+        assertEquals("Unexpected number of results", 1, results.size());
+
+        final Iterator<List<Object>> iterator = results.iterator();
+        List<Object> row = iterator.next();
+        assertEquals("Unexpected row", Lists.newArrayList(objectUuid, "1970-01-01T00:00:00Z"),
row);
+    }
+
+    public void testDateToFormattedString() throws Exception
+    {
+        final UUID objectUuid = UUID.randomUUID();
+
+        ConfiguredObject match = createCO(new HashMap<String, Object>()
+        {{
+            put(ConfiguredObject.ID, objectUuid);
+            put(DATE_ATTR, new Date(0));
+        }});
+
+        _objects.add(match);
+
+        _query = new ConfiguredObjectQuery(_objects,
+                                           String.format("%s, TO_STRING(%s,'%s', 'UTC')",
+                                                         ConfiguredObject.ID,
+                                                         DATE_ATTR,
+                                                         "%1$tF %1$tZ"),
+                                           null);
+
+        List<List<Object>> results = _query.getResults();
+        assertEquals("Unexpected number of results", 1, results.size());
+
+        final Iterator<List<Object>> iterator = results.iterator();
+        List<Object> row = iterator.next();
+        assertEquals("Unexpected row", Lists.newArrayList(objectUuid, "1970-01-01 UTC"),
row);
+    }
+
+    public void testFunctionActualParameterMismatch() throws Exception
+    {
+        try
+        {
+            _query = new ConfiguredObjectQuery(_objects,
+                                               "TO_STRING() /*Too few arguments*/ ",
+                                               null);
+            fail("Exception not thrown");
+        }
+        catch (SelectorParsingException e)
+        {
+            // PASS
+        }
+    }
+
     private ConfiguredObject createCO(final HashMap<String, Object> map)
     {
         ConfiguredObject object = mock(ConfiguredObject.class);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


Mime
View raw message