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