[MSHARED-481] Clean up and update class version detection for Java 7/8
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1721843 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java b/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
index 8cecfe0..8931ab0 100644
--- a/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
+++ b/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
@@ -45,15 +45,19 @@
public class JarClassesAnalysis
extends AbstractLogEnabled
{
+ private static final double JAVA_1_8_CLASS_VERSION = 52.0;
+
+ private static final double JAVA_1_7_CLASS_VERSION = 51.0;
+
private static final double JAVA_1_6_CLASS_VERSION = 50.0;
private static final double JAVA_1_5_CLASS_VERSION = 49.0;
- private static final double JAVA_1_4_CLASS_VERSION = 47.0;
+ private static final double JAVA_1_4_CLASS_VERSION = 48.0;
- private static final double JAVA_1_3_CLASS_VERSION = 46.0;
+ private static final double JAVA_1_3_CLASS_VERSION = 47.0;
- private static final double JAVA_1_2_CLASS_VERSION = 45.65536;
+ private static final double JAVA_1_2_CLASS_VERSION = 46.0;
private static final double JAVA_1_1_CLASS_VERSION = 45.3;
@@ -104,7 +108,7 @@
double classVersion = javaClass.getMajor();
if ( javaClass.getMinor() > 0 )
{
- classVersion = classVersion + 1 / (double) javaClass.getMinor();
+ classVersion = classVersion + javaClass.getMinor() / 10.0;
}
if ( classVersion > maxVersion )
@@ -140,35 +144,38 @@
}
}
- // TODO: check these since they are > instead of >=
- if ( maxVersion >= JAVA_1_6_CLASS_VERSION )
+ if ( maxVersion == JAVA_1_8_CLASS_VERSION )
+ {
+ classes.setJdkRevision( "1.8" );
+ }
+ else if ( maxVersion == JAVA_1_7_CLASS_VERSION )
+ {
+ classes.setJdkRevision( "1.7" );
+ }
+ else if ( maxVersion == JAVA_1_6_CLASS_VERSION )
{
classes.setJdkRevision( "1.6" );
}
- else if ( maxVersion >= JAVA_1_5_CLASS_VERSION )
+ else if ( maxVersion == JAVA_1_5_CLASS_VERSION )
{
classes.setJdkRevision( "1.5" );
}
- else if ( maxVersion > JAVA_1_4_CLASS_VERSION )
+ else if ( maxVersion == JAVA_1_4_CLASS_VERSION )
{
classes.setJdkRevision( "1.4" );
}
- else if ( maxVersion > JAVA_1_3_CLASS_VERSION )
+ else if ( maxVersion == JAVA_1_3_CLASS_VERSION )
{
classes.setJdkRevision( "1.3" );
}
- else if ( maxVersion > JAVA_1_2_CLASS_VERSION )
+ else if ( maxVersion == JAVA_1_2_CLASS_VERSION )
{
classes.setJdkRevision( "1.2" );
}
- else if ( maxVersion > JAVA_1_1_CLASS_VERSION )
+ else if ( maxVersion == JAVA_1_1_CLASS_VERSION )
{
classes.setJdkRevision( "1.1" );
}
- else if ( maxVersion > 0 )
- {
- classes.setJdkRevision( "1.0" );
- }
jarAnalyzer.getJarData().setJarClasses( classes );
}
diff --git a/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java b/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
index 5c8a3a8..4fa57d9 100644
--- a/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
+++ b/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
@@ -106,6 +106,22 @@
assertFalse( "no debug present", jclass.isDebugPresent() );
}
+ public void testAnalyzeJarVersion18()
+ throws Exception
+ {
+ JarClasses jclass = getJarClasses( "helloworld-1.8.jar" );
+
+ assertEquals( "jdkrevision", "1.8", jclass.getJdkRevision() );
+ }
+
+ public void testAnalyzeJarVersion17()
+ throws Exception
+ {
+ JarClasses jclass = getJarClasses( "helloworld-1.7.jar" );
+
+ assertEquals( "jdkrevision", "1.7", jclass.getJdkRevision() );
+ }
+
public void testAnalyzeJarVersion16()
throws Exception
{
diff --git a/src/test/resources/jars/helloworld-1.7.jar b/src/test/resources/jars/helloworld-1.7.jar
new file mode 100644
index 0000000..e48a6fe
--- /dev/null
+++ b/src/test/resources/jars/helloworld-1.7.jar
Binary files differ
diff --git a/src/test/resources/jars/helloworld-1.8.jar b/src/test/resources/jars/helloworld-1.8.jar
new file mode 100644
index 0000000..f98db02
--- /dev/null
+++ b/src/test/resources/jars/helloworld-1.8.jar
Binary files differ