You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2013/07/23 15:18:11 UTC
svn commit: r1506030 - in /cxf/branches/2.6.x-fixes: ./
rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/
rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/
rt/rs/extensions/search/src/test/java/org/apache/...
Author: sergeyb
Date: Tue Jul 23 13:18:10 2013
New Revision: 1506030
URL: http://svn.apache.org/r1506030
Log:
Merged revisions 1506028 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes
................
r1506028 | sergeyb | 2013-07-23 14:13:27 +0100 (Tue, 23 Jul 2013) | 9 lines
Merged revisions 1506026 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1506026 | sergeyb | 2013-07-23 14:07:33 +0100 (Tue, 23 Jul 2013) | 1 line
[CXF-5139] Optionall support for a single equals operator in FIQL expressions
........
................
Modified:
cxf/branches/2.6.x-fixes/ (props changed)
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/branches/2.7.x-fixes:r1506028
Merged /cxf/trunk:r1506026
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java?rev=1506030&r1=1506029&r2=1506030&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java Tue Jul 23 13:18:10 2013
@@ -176,6 +176,9 @@ public class SearchContextImpl implement
(String)message.getContextualProperty(SearchUtils.TIMEZONE_SUPPORT_PROPERTY));
props.put(SearchUtils.LAX_PROPERTY_MATCH,
(String)message.getContextualProperty(SearchUtils.LAX_PROPERTY_MATCH));
+ // FIQL specific
+ props.put(FiqlParser.SUPPORT_SINGLE_EQUALS,
+ (String)message.getContextualProperty(FiqlParser.SUPPORT_SINGLE_EQUALS));
} else {
props = parserProperties;
}
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java?rev=1506030&r1=1506029&r2=1506030&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java Tue Jul 23 13:18:10 2013
@@ -74,11 +74,13 @@ public class FiqlParser<T> implements Se
public static final Map<ConditionType, String> CONDITION_MAP;
public static final String EXTENSION_COUNT = "count";
+ public static final String SUPPORT_SINGLE_EQUALS = "fiql.support.single.equals.operator";
private static final String EXTENSION_COUNT_OPEN = EXTENSION_COUNT + "(";
private static final Map<String, ConditionType> OPERATORS_MAP;
- private static final Pattern COMPARATORS_PATTERN;
+ private static final Pattern COMPARATORS_PATTERN;
+ private static final Pattern COMPARATORS_PATTERN_SINGLE_EQUALS;
static {
// operatorsMap
@@ -103,12 +105,18 @@ public class FiqlParser<T> implements Se
String comparators = GT + "|" + GE + "|" + LT + "|" + LE + "|" + EQ + "|" + NEQ;
String s1 = "[\\p{ASCII}]+(" + comparators + ")";
COMPARATORS_PATTERN = Pattern.compile(s1);
+
+ String s2 = "[\\p{ASCII}]+(" + comparators + "|" + "=" + ")";
+ COMPARATORS_PATTERN_SINGLE_EQUALS = Pattern.compile(s2);
}
private Beanspector<T> beanspector;
private Class<T> conditionClass;
private Map<String, String> contextProperties;
private Map<String, String> beanPropertiesMap;
+
+ private Map<String, ConditionType> operatorsMap = OPERATORS_MAP;
+ private Pattern comparatorsPattern = COMPARATORS_PATTERN;
/**
* Creates FIQL parser.
*
@@ -146,6 +154,11 @@ public class FiqlParser<T> implements Se
this.contextProperties = contextProperties == null
? Collections.<String, String>emptyMap() : contextProperties;
this.beanPropertiesMap = beanProperties;
+ if (MessageUtils.isTrue(this.contextProperties.get(SUPPORT_SINGLE_EQUALS))) {
+ operatorsMap = new HashMap<String, ConditionType>(operatorsMap);
+ operatorsMap.put("=", ConditionType.EQUALS);
+ comparatorsPattern = COMPARATORS_PATTERN_SINGLE_EQUALS;
+ }
}
/**
@@ -257,7 +270,7 @@ public class FiqlParser<T> implements Se
}
private Comparison parseComparison(String expr) throws SearchParseException {
- Matcher m = COMPARATORS_PATTERN.matcher(expr);
+ Matcher m = comparatorsPattern.matcher(expr);
if (m.find()) {
String propertyName = expr.substring(0, m.start(1));
String operator = m.group(1);
@@ -559,7 +572,7 @@ public class FiqlParser<T> implements Se
public SearchCondition<T> build() throws SearchParseException {
String templateName = getSetter(name);
T cond = createTemplate(templateName);
- ConditionType ct = OPERATORS_MAP.get(operator);
+ ConditionType ct = operatorsMap.get(operator);
if (isPrimitive(cond)) {
return new SimpleSearchCondition<T>(ct, cond);
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java?rev=1506030&r1=1506029&r2=1506030&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java Tue Jul 23 13:18:10 2013
@@ -171,4 +171,39 @@ public class SearchContextImplTest exten
&& "CXF Rocks".equals(sc1.getStatement().getValue()));
}
+
+ @Test
+ public void testPrimitiveStatement() {
+ Message m = new MessageImpl();
+ m.put(Message.QUERY_STRING, "_s=name==CXF");
+ SearchContext context = new SearchContextImpl(m);
+ SearchCondition<SearchBean> sc = context.getCondition(SearchBean.class);
+ assertNotNull(sc);
+
+ PrimitiveStatement ps = sc.getStatement();
+ assertNotNull(ps);
+
+ assertEquals("name", ps.getProperty());
+ assertEquals("CXF", ps.getValue());
+ assertEquals(ConditionType.EQUALS, ps.getCondition());
+ assertEquals(String.class, ps.getValueType());
+ }
+
+ @Test
+ public void testSingleEquals() {
+ Message m = new MessageImpl();
+ m.put(Message.QUERY_STRING, "_s=name=CXF");
+ m.put("fiql.support.single.equals.operator", "true");
+ SearchContext context = new SearchContextImpl(m);
+ SearchCondition<SearchBean> sc = context.getCondition(SearchBean.class);
+ assertNotNull(sc);
+
+ PrimitiveStatement ps = sc.getStatement();
+ assertNotNull(ps);
+
+ assertEquals("name", ps.getProperty());
+ assertEquals("CXF", ps.getValue());
+ assertEquals(ConditionType.EQUALS, ps.getCondition());
+ assertEquals(String.class, ps.getValueType());
+ }
}