changeset 22276:6af6ca6c848e

Always use at least SystemClassLoader to load custom message classes
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Tue, 06 Oct 2015 11:10:02 +0200
parents 141fe31da7a2
children 412991d0359c
files truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Message.java truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/interop/MessageStringTest.java
diffstat 2 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Message.java	Tue Oct 06 10:25:22 2015 +0200
+++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Message.java	Tue Oct 06 11:10:02 2015 +0200
@@ -413,7 +413,11 @@
                 return (Message) Message.class.getMethod(factory, int.class).invoke(null, 0);
             } catch (Exception ex2) {
                 try {
-                    return (Message) Class.forName(message).newInstance();
+                    ClassLoader l = Message.class.getClassLoader();
+                    if (l == null) {
+                        l = ClassLoader.getSystemClassLoader();
+                    }
+                    return (Message) Class.forName(message, false, l).newInstance();
                 } catch (Exception ex1) {
                     throw new IllegalArgumentException("Cannot find message for " + message, ex);
                 }
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/interop/MessageStringTest.java	Tue Oct 06 10:25:22 2015 +0200
+++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/interop/MessageStringTest.java	Tue Oct 06 11:10:02 2015 +0200
@@ -31,7 +31,6 @@
 import java.lang.reflect.Modifier;
 import java.util.Locale;
 
-import org.junit.Ignore;
 import org.junit.Test;
 
 import com.oracle.truffle.api.interop.Message;
@@ -88,7 +87,6 @@
         }
     }
 
-    @Ignore
     @Test
     public void specialMessagePersitance() {
         SpecialMsg msg = new SpecialMsg();