You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Sergey Beryozkin (JIRA)" <ji...@apache.org> on 2014/10/07 11:31:34 UTC
[jira] [Comment Edited] (CXF-5688) Problem Parsing FIQL Involving
Enums
[ https://issues.apache.org/jira/browse/CXF-5688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14161681#comment-14161681 ]
Sergey Beryozkin edited comment on CXF-5688 at 10/7/14 9:31 AM:
----------------------------------------------------------------
Actually, the following code
{code:java}
if (m != null && !MessageUtils.getContextualBoolean(m, ENUM_CONVERSION_CASE_SENSITIVE, false)) {
obj = invokeValueOf(value.toUpperCase(), cls);
}
{code}
means "Use the upper-case conversion if ENUM_CONVERSION_CASE_SENSITIVE was not set or explicitly set to false", i.e, the upper-case conversion is done by default.
So I won't be applying the change which would mean "Use the upper-case conversion if ENUM_CONVERSION_CASE_SENSITIVE was not set or set to true" which does not really makes sense.
In fact I think it is a bit too over-elaborate. I can keep the current code as is but would rather prefer to drop the ENUM_CONVERSION_CASE_SENSITIVE check completely and try the upper-conversion case first and if that fails then retry with the original value - should be cheap and the code will become simpler.
was (Author: sergey_beryozkin):
Actually, the following code
{code:java}
if (m != null && !MessageUtils.getContextualBoolean(m, ENUM_CONVERSION_CASE_SENSITIVE, false)) {
obj = invokeValueOf(value.toUpperCase(), cls);
}
{code}
means "Use the upper-case conversion if ENUM_CONVERSION_CASE_SENSITIVE was not set or explicitly set to false", i.e, the upper-case conversion is dome by default.
So I won't be applying the change which would mean "Use the upper-case conversion if ENUM_CONVERSION_CASE_SENSITIVE was not set or set to true" which does not really makes sense.
In fact I think it is a bit too over-elaborate. I can keep the current code as is but would rather prefer to drop the ENUM_CONVERSION_CASE_SENSITIVE check completely and try the upper-conversion case first and if that fails then retry with the original value - should be cheap and the code will become simpler.
> Problem Parsing FIQL Involving Enums
> ------------------------------------
>
> Key: CXF-5688
> URL: https://issues.apache.org/jira/browse/CXF-5688
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
> Reporter: Azitabh
> Assignee: Sergey Beryozkin
> Priority: Minor
> Fix For: 3.0.0, 2.7.12
>
>
> FIQL parser assumes that enums would be defined in all caps.
> In case Enums are not defined in all caps, InjectionUtils.convertStringToPrimitive(String value, Class<?> cls) raises PropertyNotFoundException because it's converting the user provided enum value to caps and calling ENUM.valueOf(UPPERCASE_STR).
> ethod m = cls.getMethod("valueOf", new Class[]{String.class});
> return m.invoke(null, value.toUpperCase());
> Since JAVA doesn't enforce enums to be all caps, I don't see any reason why FIQLParser should assume this.
> https://github.com/apache/cxf/blob/master/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)