[
https://issues.jboss.org/browse/AS7-6139?page=com.atlassian.jira.plugin.s...
]
Brian Stansberry commented on AS7-6139:
---------------------------------------
That should work, yes. Some suggestions:
1) The matches() method should immediately return 'true' if validType ==
value.getType(). That would be more efficient even with the current code, but with the
string manipulation this patch adds, it becomes more important. This method gets invoked a
lot during boot, so we want high performance.
With this change, the default case can be changed to return false; since the if test will
have already done what the default case is doing now.
2) Minor: Please convert the
if (x.compareTo(y) != 0) return false;
return true;
to
return x.compareTo(y) == 0;
Otherwise our IDEs will suggest we make that change and won't give us the nice
"Green" icon for the file until we do. :)
3) Really minor: checkNumericType(value, type); can get the type from "value";
it doesn't need to be a param. Or, if you keep the type from the test in my 1) above
you can just use it and not get it again in each case of the switch.
ModelTypeValidator is overly lenient about numeric types
--------------------------------------------------------
Key: AS7-6139
URL:
https://issues.jboss.org/browse/AS7-6139
Project: Application Server 7
Issue Type: Bug
Components: Domain Management
Affects Versions: 7.1.3.Final (EAP)
Reporter: Brian Stansberry
Priority: Minor
Attachments: AS7-6139.patch
ModelTypeValidator does some conversion checks to see if a passed in ModelNode meets the
requirements of the valid type. These checks are overly lenient when it comes to numeric
types as they rely only on the ModelNode.asXXX() methods not failing. But those methods
don't fail even if the conversion involves a narrowing.
For example, calling new ModelNode(Long.MAX_LONG).asInt() will not fail, but if the user
passed in such a value for use in an attribute of type INT the stored value would not be
what was expected.
Note this is minor as in many, many cases ModelTypeValidator subclasses like
IntRangeValidator are used, and those subclasses enforce ranges.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira