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 2015/04/03 17:16:31 UTC
cxf git commit: [CXF-6322] Adding another check for ParameterConverter
Repository: cxf
Updated Branches:
refs/heads/master 840a021d2 -> 4387055bb
[CXF-6322] Adding another check for ParameterConverter
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/4387055b
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/4387055b
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/4387055b
Branch: refs/heads/master
Commit: 4387055bbeb680867fa5b53c52e92b72778d3ef5
Parents: 840a021
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Fri Apr 3 16:16:15 2015 +0100
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Fri Apr 3 16:16:15 2015 +0100
----------------------------------------------------------------------
.../search/AbstractSearchConditionParser.java | 21 ++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/4387055b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java
index 2eda542..5721c8b 100644
--- a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java
+++ b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionParser.java
@@ -37,6 +37,7 @@ import org.apache.cxf.common.util.PropertyUtils;
import org.apache.cxf.jaxrs.ext.search.Beanspector.TypeInfo;
import org.apache.cxf.jaxrs.ext.search.collections.CollectionCheck;
import org.apache.cxf.jaxrs.ext.search.collections.CollectionCheckInfo;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
import org.apache.cxf.jaxrs.utils.JAXRSUtils;
import org.apache.cxf.message.Message;
@@ -44,13 +45,12 @@ import org.apache.cxf.message.MessageUtils;
public abstract class AbstractSearchConditionParser<T> implements SearchConditionParser<T> {
-
+ private static final Annotation[] EMPTY_ANNOTTAIONS = new Annotation[]{};
protected final Map<String, String> contextProperties;
protected final Class<T> conditionClass;
protected Beanspector<T> beanspector;
protected Map<String, String> beanPropertiesMap;
-
-
+
protected AbstractSearchConditionParser(Class<T> tclass) {
this(tclass, Collections.<String, String>emptyMap(), null);
}
@@ -167,7 +167,11 @@ public abstract class AbstractSearchConditionParser<T> implements SearchConditio
boolean isPrimitive = !returnCollection
&& InjectionUtils.isPrimitive(returnType) || returnType.isEnum();
boolean lastTry = names.length == 2
- && (isPrimitive || Date.class.isAssignableFrom(returnType) || returnCollection);
+ && (isPrimitive
+ ||
+ Date.class.isAssignableFrom(returnType)
+ || returnCollection
+ || paramConverterAvailable(returnType));
Object valueObject = ownerBean != null ? ownerBean
: actualType.isInterface()
@@ -226,6 +230,15 @@ public abstract class AbstractSearchConditionParser<T> implements SearchConditio
}
}
+ private boolean paramConverterAvailable(Class<?> pClass) {
+ Message m = JAXRSUtils.getCurrentMessage();
+ ServerProviderFactory pf = m == null ? null : ServerProviderFactory.getInstance(m);
+ if (pf != null && pf.createParameterHandler(pClass, pClass, EMPTY_ANNOTTAIONS) != null) {
+ return true;
+ }
+ return false;
+ }
+
private CollectionCheck getCollectionCheck(String propName, boolean isCollection, Class<?> actualCls) {
if (isCollection) {
if (InjectionUtils.isPrimitive(actualCls)) {