[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