REST type conversion to Byte, Integer, ... (non primitives) not working
-----------------------------------------------------------------------

                 Key: CXF-2698
                 URL: https://issues.apache.org/jira/browse/CXF-2698
             Project: CXF
          Issue Type: Bug
          Components: JAX-WS Runtime
    Affects Versions: 2.2.5
         Environment: using JAXD Databinding, JAX-WS with REST 
            Reporter: Dieter Freismuth


methods like 
public String sayHi(@WebParam(name="number") Byte number)
taking java.lang.Number can not be called via REST HTTP GET methods since there 
is not type conversion from String to Byte.
This works using primitive types like byte!

The root cause can be found at the end of 
URIMappingInterceptor.getParameters(...) method:
           
if (type != null && type.isPrimitive() && queries.get(key) != null) {
  param = PrimitiveUtils.read(queries.get(key), type);
} else {
  param = queries.get(key);
}

either PrimitiveUtils.read(..) should also work for Integer, Byte,.. types or 
there should be an extra method like:
         public Object readNullableTypes(String value, Class type) {
            Object ret = value;
            if (Integer.class == type) {
                ret = Integer.valueOf(value);
            }
            if (Byte.class == type) {
                ret = Byte.valueOf(value);
            }
            if (Short.class == type) {
                ret = Short.valueOf(value);
            }
            if (Long.class == type) {
                ret = Long.valueOf(value);
            }
            if (Float.class == type) {
                ret = Float.valueOf(value);
            }
            if (Double.class == type) {
                ret = Double.valueOf(value);
            }
            if (Boolean.class == type) {
                ret = Boolean.valueOf(value);
            }
            if (Character.class == type) {
                ret = value.charAt(0);
            }
            return ret;
        }


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to