[ 
https://issues.apache.org/jira/browse/LANG-624?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12985258#action_12985258
 ] 

Henri Yandell commented on LANG-624:
------------------------------------

Digging deeper into SystemUtils and specifically what I think should change:

JAVA_VERSION: Keep as is. It's fair to expect it to point to java.version. That 
that is the vendor version should be noted in the javadoc.

JAVA_VERSION_TRIMMED: We shouldn't be trying to parse the specification version 
out of java.version. Remove this. 

getJavaVersionTrimmed(): Private method for the above. Also remove.

JAVA_VERSION_FLOAT: This now becomes impossible. Remove this - I don't think 
there's huge need to have code only run on 1.6.1 of a JVM. Sure it might be a 
good way to get around some bug in 1.6.0, but the code becomes inherently 
unportable.

JAVA_VERSION_INT: Same as above. Remove.

getJavaVersionMatches: Move this over to using JAVA_SPECIFICATION_VERSION. 

isJavaVersionAtLeast: Move to spec version. This means having a private Float 
version(?). Drop the int variant of this method as it's silly to pass in 13 
instead of 1.3. In general this is a silly method; the better solution imo 
would be to have a JAVA_1_2 enum :) I wonder if that's something we should 
consider for all of the IS_XYZ 'constants'?



> SystemUtils.getJavaVersionAsFloat throws StringIndexOutOfBoundsException on 
> Android runtime/Dalvik VM
> -----------------------------------------------------------------------------------------------------
>
>                 Key: LANG-624
>                 URL: https://issues.apache.org/jira/browse/LANG-624
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.*
>    Affects Versions: 2.5
>            Reporter: Travis Truman
>             Fix For: 3.0
>
>         Attachments: AndriodJavaVersion.png
>
>
> Can be replicated in the Android emulator quite easily.
> Stack trace:
> {noformat}
> at 
> org.apache.commons.lang.builder.ToStringBuilder.<clinit>(ToStringBuilder.java:98)
> E/AndroidRuntime( 1681):      ... 17 more
> E/AndroidRuntime( 1681): Caused by: java.lang.ExceptionInInitializerError
> E/AndroidRuntime( 1681):      at 
> org.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle.<init>(ToStringStyle.java:2276)
> E/AndroidRuntime( 1681):      at 
> org.apache.commons.lang.builder.ToStringStyle.<clinit>(ToStringStyle.java:94)
> E/AndroidRuntime( 1681):      ... 18 more
> E/AndroidRuntime( 1681): Caused by: java.lang.StringIndexOutOfBoundsException
> E/AndroidRuntime( 1681):      at java.lang.String.substring(String.java:1571)
> E/AndroidRuntime( 1681):      at 
> org.apache.commons.lang.SystemUtils.getJavaVersionAsFloat(SystemUtils.java:1153)
> E/AndroidRuntime( 1681):      at 
> org.apache.commons.lang.SystemUtils.<clinit>(SystemUtils.java:818)
> {noformat}

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