Author: sergeyb
Date: Thu Dec 19 17:26:25 2013
New Revision: 1552365
URL: http://svn.apache.org/r1552365
Log:
Merged revisions 1552359 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1552359 | sergeyb | 2013-12-19 17:17:05 +0000 (Thu, 19 Dec 2013) | 1 line
[CXF-5449] Updating FiqlParser to better deal with the deeply nested queries
........
Modified:
cxf/branches/2.7.x-fixes/ (props changed)
cxf/branches/2.7.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
cxf/branches/2.7.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/trunk:r1552359
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified:
cxf/branches/2.7.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.7.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java?rev=1552365&r1=1552364&r2=1552365&view=diff
==============================================================================
---
cxf/branches/2.7.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
(original)
+++
cxf/branches/2.7.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
Thu Dec 19 17:26:25 2013
@@ -383,7 +383,7 @@ public class FiqlParser<T> implements Se
boolean lastTry = names.length == 2
&& (isPrimitive || returnType == Date.class ||
returnCollection);
- Object valueObject = lastTry && ownerBean != null ? ownerBean
+ Object valueObject = ownerBean != null ? ownerBean
: actualType.isInterface()
? Proxy.newProxyInstance(this.getClass().getClassLoader(),
new Class[]{actualType},
@@ -411,18 +411,25 @@ public class FiqlParser<T> implements Se
Method setterM = actualType.getMethod("set" + nextPart, new
Class[]{returnType});
setterM.invoke(valueObject, new Object[]{nextObject});
- lastCastedValue = lastCastedValue == null ? valueObject :
lastCastedValue;
if (lastTry) {
+ lastCastedValue = lastCastedValue == null ? valueObject :
lastCastedValue;
return isCollection ? getCollectionSingleton(valueType,
lastCastedValue) : lastCastedValue;
- }
+ } else {
+ lastCastedValue = valueObject;
+ }
TypeInfo nextTypeInfo = new TypeInfo(nextObject.getClass(),
getterM.getGenericReturnType());
- return parseType(originalPropName,
+ Object response = parseType(originalPropName,
nextObject,
lastCastedValue,
setter.substring(index + 1),
nextTypeInfo,
value);
+ if (ownerBean == null) {
+ return isCollection ? getCollectionSingleton(valueType,
lastCastedValue) : lastCastedValue;
+ } else {
+ return response;
+ }
} catch (Throwable e) {
throw new SearchParseException("Cannot convert String value
\"" + value
+ "\" to a value of class " +
valueType.getName(), e);
Modified:
cxf/branches/2.7.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java?rev=1552365&r1=1552364&r2=1552365&view=diff
==============================================================================
---
cxf/branches/2.7.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java
(original)
+++
cxf/branches/2.7.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/jpa/JPATypedQueryVisitorTest.java
Thu Dec 19 17:26:25 2013
@@ -199,6 +199,20 @@ public class JPATypedQueryVisitorTest ex
}
@Test
+ public void testQueryCollection2() throws Exception {
+ List<Book> books =
+ queryBooks("reviews.book.id==10");
+ assertEquals(1, books.size());
+ }
+
+ @Test
+ public void testQueryCollection3() throws Exception {
+ List<Book> books =
+ queryBooks("reviews.book.ownerInfo.name==Barry");
+ assertEquals(1, books.size());
+ }
+
+ @Test
public void testQueryElementCollection() throws Exception {
List<Book> books =
queryBooks("authors==John");