You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by bl...@apache.org on 2015/11/02 13:40:35 UTC

incubator-groovy git commit: GROOVY-7587: add code to bypass jigsaw exception and change a GCL method to avoid compilation problems with a new ClassLoader method

Repository: incubator-groovy
Updated Branches:
  refs/heads/master e2254bfe4 -> 49653820e


GROOVY-7587: add code to bypass jigsaw exception and change a GCL method to avoid compilation problems with a new ClassLoader method


Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/49653820
Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/49653820
Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/49653820

Branch: refs/heads/master
Commit: 49653820edccd1c4c3aa0e14e7c394441bb0e643
Parents: e2254bf
Author: Jochen Theodorou <bl...@gmx.org>
Authored: Mon Nov 2 13:23:55 2015 +0100
Committer: Jochen Theodorou <bl...@gmx.org>
Committed: Mon Nov 2 13:26:42 2015 +0100

----------------------------------------------------------------------
 src/main/groovy/lang/GroovyClassLoader.java                   | 6 +++---
 src/main/org/codehaus/groovy/reflection/CachedClass.java      | 3 +++
 .../org/codehaus/groovy/reflection/CachedConstructor.java     | 7 +++++--
 src/main/org/codehaus/groovy/vmplugin/v7/Java7.java           | 4 ++++
 4 files changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/49653820/src/main/groovy/lang/GroovyClassLoader.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/GroovyClassLoader.java b/src/main/groovy/lang/GroovyClassLoader.java
index 049d336..b606c6d 100644
--- a/src/main/groovy/lang/GroovyClassLoader.java
+++ b/src/main/groovy/lang/GroovyClassLoader.java
@@ -178,7 +178,7 @@ public class GroovyClassLoader extends URLClassLoader {
             unit.addClassNode(classNode);
             unit.setClassgenCallback(collector);
             unit.compile(Phases.CLASS_GENERATION);
-            definePackage(collector.generatedClass.getName());
+            definePackageInternal(collector.generatedClass.getName());
             return collector.generatedClass;
         } catch (CompilationFailedException e) {
             throw new RuntimeException(e);
@@ -302,7 +302,7 @@ public class GroovyClassLoader extends URLClassLoader {
         for (Object o : collector.getLoadedClasses()) {
             Class clazz = (Class) o;
             String clazzName = clazz.getName();
-            definePackage(clazzName);
+            definePackageInternal(clazzName);
             setClassCacheEntry(clazz);
             if (clazzName.equals(mainClass)) answer = clazz;
         }
@@ -317,7 +317,7 @@ public class GroovyClassLoader extends URLClassLoader {
         }
     }
 
-    private void definePackage(String className) {
+    private void definePackageInternal(String className) {
         int i = className.lastIndexOf('.');
         if (i != -1) {
             String pkgName = className.substring(0, i);

http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/49653820/src/main/org/codehaus/groovy/reflection/CachedClass.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/reflection/CachedClass.java b/src/main/org/codehaus/groovy/reflection/CachedClass.java
index aa3ec89..afba52a 100644
--- a/src/main/org/codehaus/groovy/reflection/CachedClass.java
+++ b/src/main/org/codehaus/groovy/reflection/CachedClass.java
@@ -55,6 +55,9 @@ public class CachedClass {
                            AccessibleObject.setAccessible(df, true);
                        } catch (SecurityException e) {
                            // swallow for strict security managers
+                       } catch (RuntimeException re) {
+                           // test for JDK9 JIGSAW
+                           if (!"java.lang.reflect.InaccessibleObjectException".equals(re.getClass().getName())) throw re;
                        }
                        return df;                                                   
                    }

http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/49653820/src/main/org/codehaus/groovy/reflection/CachedConstructor.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/reflection/CachedConstructor.java b/src/main/org/codehaus/groovy/reflection/CachedConstructor.java
index e912a21..1d8f458 100644
--- a/src/main/org/codehaus/groovy/reflection/CachedConstructor.java
+++ b/src/main/org/codehaus/groovy/reflection/CachedConstructor.java
@@ -45,9 +45,12 @@ public class CachedConstructor extends ParameterTypes {
                     return null;
                 }
             });
-        }
-        catch (SecurityException e) {
+        } catch (SecurityException e) {
             // IGNORE
+        } catch (RuntimeException re) {
+            // test for JDK9 JIGSAW
+            if (!"java.lang.reflect.InaccessibleObjectException".equals(re.getClass().getName())) throw re;
+            // else IGNORE
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/49653820/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java b/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java
index 4a26d82..93165b1 100644
--- a/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java
+++ b/src/main/org/codehaus/groovy/vmplugin/v7/Java7.java
@@ -57,6 +57,10 @@ public class Java7 extends Java6 {
             }
         } catch (SecurityException se) {
             con = null;
+        } catch (RuntimeException re) {
+            // test for JDK9 JIGSAW
+            if (!"java.lang.reflect.InaccessibleObjectException".equals(re.getClass().getName())) throw re;
+            con = null;
         }
         LOOKUP_Constructor = con;
     }