Blob Blame History Raw
From 561d101120709638735fd5add2c0c545c548d5da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Galder=20Zamarren=CC=83o?= <galder@zamarreno.com>
Date: Mon, 10 Feb 2014 10:11:04 +0100
Subject: [PATCH] ISPN-3974 Make it compile with JDK8

* Module name calculation in javascript driven Server/AS/Wildfly
now works with both JDK7 and JDK8 by trying a split/join and if it
does not work, use a replace.
* spliterator() method name clashes with a new spliterator() method
introduced in java.util.Collection for JDK8, so name it differently
* Enable animal-sniffer maven plugin only when JDK7 is used since
it does not yet work with JDK8 (not even latest version 1.10).
---
 as-modules/build.xml                               |  4 --
 as-modules/lib.xml                                 | 18 ++++++-
 .../EquivalentConcurrentHashMapV8.java             |  6 +--
 .../jdk8backported/ConcurrentHashMapV8.java        |  6 +--
 parent/pom.xml                                     | 62 ++++++++++++----------
 server/integration/build/lib.xml                   | 18 ++++++-
 .../org/infinispan/tools/doclet/jmx/JmxDoclet.java | 22 +++++++-
 7 files changed, 93 insertions(+), 43 deletions(-)

diff --git a/as-modules/build.xml b/as-modules/build.xml
index c06b915..8ae2cf8 100644
--- a/as-modules/build.xml
+++ b/as-modules/build.xml
@@ -32,10 +32,6 @@
          <maven-resource group="org.infinispan" artifact="infinispan-core" />
       </module-def>
 
-      <module-def name="org.infinispan.cachestore.jdbc" slot="${infinispan.slot}" />
-
-      <module-def name="org.infinispan.cachestore.remote" slot="${infinispan.slot}" />
-      
       <module-def name="org.infinispan.persistence.jdbc" slot="${infinispan.slot}">
          <maven-resource group="org.infinispan" artifact="infinispan-cachestore-jdbc" />
       </module-def>
diff --git a/as-modules/lib.xml b/as-modules/lib.xml
index ede0bf2..28b598d 100644
--- a/as-modules/lib.xml
+++ b/as-modules/lib.xml
@@ -87,7 +87,14 @@
         <attribute name="slot"/>
         <![CDATA[
             name = attributes.get("name");
-            name = name.replace(".", "/");
+            name = name.split(".").join("/");
+            if (name) {
+              self.log("Use JDK8 method to build module names");
+            } else {
+              name = attributes.get("name");
+              name = name.replace(".", "/");
+              self.log("Use JDK7 method to build module names");
+            }
             project.setProperty("source.module.path", name + "/main");
             project.setProperty("current.module.path", name + "/" + attributes.get("slot"));
         ]]>
@@ -98,7 +105,14 @@
         <attribute name="slot"/>
         <![CDATA[
             name = attributes.get("name");
-            name = name.replace(".", "/");
+            name = name.split(".").join("/");
+            if (name) {
+              self.log("Use JDK8 method to build module names");
+            } else {
+              name = attributes.get("name");
+              name = name.replace(".", "/");
+              self.log("Use JDK7 method to build module names");
+            }
             project.setProperty("current.bundle.path", name + "/" + attributes.get("slot"));
         ]]>
     </scriptdef>
diff --git a/commons/src/main/java/org/infinispan/commons/util/concurrent/jdk8backported/EquivalentConcurrentHashMapV8.java b/commons/src/main/java/org/infinispan/commons/util/concurrent/jdk8backported/EquivalentConcurrentHashMapV8.java
index 22ca860..f7a81a5 100644
--- a/commons/src/main/java/org/infinispan/commons/util/concurrent/jdk8backported/EquivalentConcurrentHashMapV8.java
+++ b/commons/src/main/java/org/infinispan/commons/util/concurrent/jdk8backported/EquivalentConcurrentHashMapV8.java
@@ -4555,7 +4555,7 @@ public boolean equals(Object o) {
                               (containsAll(c) && c.containsAll(this))));
       }
 
-      public ConcurrentHashMapSpliterator<K> spliterator() {
+      public ConcurrentHashMapSpliterator<K> spliteratorV8() {
          Node<K,V>[] t;
          EquivalentConcurrentHashMapV8<K,V> m = map;
          long n = m.sumCount();
@@ -4613,7 +4613,7 @@ public final boolean addAll(Collection<? extends V> c) {
          throw new UnsupportedOperationException();
       }
 
-      public ConcurrentHashMapSpliterator<V> spliterator() {
+      public ConcurrentHashMapSpliterator<V> spliteratorV8() {
          Node<K,V>[] t;
          EquivalentConcurrentHashMapV8<K,V> m = map;
          long n = m.sumCount();
@@ -4702,7 +4702,7 @@ public final boolean equals(Object o) {
                               (containsAll(c) && c.containsAll(this))));
       }
 
-      public ConcurrentHashMapSpliterator<Map.Entry<K,V>> spliterator() {
+      public ConcurrentHashMapSpliterator<Map.Entry<K,V>> spliteratorV8() {
          Node<K,V>[] t;
          EquivalentConcurrentHashMapV8<K,V> m = map;
          long n = m.sumCount();
diff --git a/core/src/test/java/org/infinispan/commons/util/concurrent/jdk8backported/ConcurrentHashMapV8.java b/core/src/test/java/org/infinispan/commons/util/concurrent/jdk8backported/ConcurrentHashMapV8.java
index e2db305..55811cf 100644
--- a/core/src/test/java/org/infinispan/commons/util/concurrent/jdk8backported/ConcurrentHashMapV8.java
+++ b/core/src/test/java/org/infinispan/commons/util/concurrent/jdk8backported/ConcurrentHashMapV8.java
@@ -4515,7 +4515,7 @@ public boolean equals(Object o) {
                               (containsAll(c) && c.containsAll(this))));
       }
 
-      public ConcurrentHashMapSpliterator<K> spliterator() {
+      public ConcurrentHashMapSpliterator<K> spliteratorV8() {
          Node<K,V>[] t;
          ConcurrentHashMapV8<K,V> m = map;
          long n = m.sumCount();
@@ -4573,7 +4573,7 @@ public final boolean addAll(Collection<? extends V> c) {
          throw new UnsupportedOperationException();
       }
 
-      public ConcurrentHashMapSpliterator<V> spliterator() {
+      public ConcurrentHashMapSpliterator<V> spliteratorV8() {
          Node<K,V>[] t;
          ConcurrentHashMapV8<K,V> m = map;
          long n = m.sumCount();
@@ -4661,7 +4661,7 @@ public final boolean equals(Object o) {
                               (containsAll(c) && c.containsAll(this))));
       }
 
-      public ConcurrentHashMapSpliterator<Map.Entry<K,V>> spliterator() {
+      public ConcurrentHashMapSpliterator<Map.Entry<K,V>> spliteratorV8() {
          Node<K,V>[] t;
          ConcurrentHashMapV8<K,V> m = map;
          long n = m.sumCount();
diff --git a/parent/pom.xml b/parent/pom.xml
index 28a032b..8df5c21 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -145,7 +145,7 @@
       <version.webdav.servlet>2.0.1</version.webdav.servlet>
       <version.weld>1.1.13.Final</version.weld>
       <version.wildfly>8.0.0.Beta1</version.wildfly>
-      <version.javassist>3.15.0-GA</version.javassist>
+      <version.javassist>3.18.0-GA</version.javassist>
       <version.maven.animal.sniffer>1.9</version.maven.animal.sniffer>
       <version.maven.buildhelper>1.8</version.maven.buildhelper>
       <version.maven.bundle>2.4.0</version.maven.bundle>
@@ -1157,30 +1157,6 @@
             </executions>
          </plugin>
          <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>animal-sniffer-maven-plugin</artifactId>
-            <version>${version.maven.animal.sniffer}</version>
-            <configuration>
-               <signature>
-                  <groupId>org.codehaus.mojo.signature</groupId>
-                  <artifactId>java16</artifactId>
-                  <version>1.0</version>
-               </signature>
-               <ignores>
-                  <ignore>sun.misc.Unsafe</ignore>
-                  <ignore>org.apache.lucene.store.IOContext</ignore>
-               </ignores>
-            </configuration>
-            <executions>
-              <execution>
-                <phase>process-classes</phase>
-                <goals>
-                  <goal>check</goal>
-                </goals>
-              </execution>
-            </executions>
-         </plugin>
-         <plugin>
             <artifactId>maven-remote-resources-plugin</artifactId>
             <version>1.1</version>
             <executions>
@@ -1896,6 +1872,38 @@
             </plugins>
          </build>
       </profile>
-
+      <profile>
+         <activation>
+            <jdk>1.7</jdk>
+         </activation>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.codehaus.mojo</groupId>
+                  <artifactId>animal-sniffer-maven-plugin</artifactId>
+                  <version>${version.maven.animal.sniffer}</version>
+                  <configuration>
+                     <signature>
+                        <groupId>org.codehaus.mojo.signature</groupId>
+                        <artifactId>java16</artifactId>
+                        <version>1.0</version>
+                     </signature>
+                     <ignores>
+                        <ignore>sun.misc.Unsafe</ignore>
+                        <ignore>org.apache.lucene.store.IOContext</ignore>
+                     </ignores>
+                  </configuration>
+                  <executions>
+                     <execution>
+                        <phase>process-classes</phase>
+                        <goals>
+                        <goal>check</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
    </profiles>
-</project>
\ No newline at end of file
+</project>
diff --git a/server/integration/build/lib.xml b/server/integration/build/lib.xml
index cf6f62d..ac7fee9 100644
--- a/server/integration/build/lib.xml
+++ b/server/integration/build/lib.xml
@@ -111,7 +111,14 @@
         <attribute name="slot"/>
         <![CDATA[
             name = attributes.get("name");
-            name = name.replace(".", "/");
+            name = name.split(".").join("/");
+            if (name) {
+              self.log("Use JDK8 method to build module names");
+            } else {
+              name = attributes.get("name");
+              name = name.replace(".", "/");
+              self.log("Use JDK7 method to build module names");
+            }
             project.setProperty("current.module.path", name + "/" + attributes.get("slot"));
         ]]>
     </scriptdef>
@@ -121,7 +128,14 @@
         <attribute name="slot"/>
         <![CDATA[
             name = attributes.get("name");
-            name = name.replace(".", "/");
+            name = name.split(".").join("/");
+            if (name) {
+              self.log("Use JDK8 method to build module names");
+            } else {
+              name = attributes.get("name");
+              name = name.replace(".", "/");
+              self.log("Use JDK7 method to build module names");
+            }
             project.setProperty("current.bundle.path", name + "/" + attributes.get("slot"));
         ]]>
     </scriptdef>
diff --git a/tools/src/main/java/org/infinispan/tools/doclet/jmx/JmxDoclet.java b/tools/src/main/java/org/infinispan/tools/doclet/jmx/JmxDoclet.java
index db682ee..0862943 100644
--- a/tools/src/main/java/org/infinispan/tools/doclet/jmx/JmxDoclet.java
+++ b/tools/src/main/java/org/infinispan/tools/doclet/jmx/JmxDoclet.java
@@ -16,6 +16,8 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedList;
@@ -64,7 +66,7 @@ private static String jmxTitle() {
    }
 
    public static int optionLength(String option) {
-      return (ConfigurationImpl.getInstance()).optionLength(option);
+      return (createConfigurationImpl()).optionLength(option);
    }
 
    public static boolean validOptions(String options[][], DocErrorReporter reporter) {
@@ -77,7 +79,23 @@ public static boolean validOptions(String options[][], DocErrorReporter reporter
          else if (option[0].equals("-header")) header = option[1];
          else if (option[0].equals("-doctitle")) title = option[1];
       }
-      return (ConfigurationImpl.getInstance()).validOptions(options, reporter);
+      return (createConfigurationImpl()).validOptions(options, reporter);
+   }
+
+   private static ConfigurationImpl createConfigurationImpl() {
+      try {
+         // Deal with JDK7/JDK8 differences
+         Method getInstanceMethod = ConfigurationImpl.class.getMethod("getInstance");
+         return (ConfigurationImpl) getInstanceMethod.invoke(null);
+      } catch (NoSuchMethodException e) {
+         try {
+            return ConfigurationImpl.class.newInstance();
+         } catch (Exception e1) {
+            throw new RuntimeException(e1);
+         }
+      } catch (Exception e1) {
+         throw new RuntimeException(e1);
+      }
    }
 
    private static MBeanComponent toJmxComponent(ClassDoc cd) {
-- 
1.9.0