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)) {