Skip to content

Commit

Permalink
fixes another bug (supporting jdk.*) reported in #228
Browse files Browse the repository at this point in the history
  • Loading branch information
chibash committed Dec 6, 2018
1 parent a82e2d7 commit 9cfa81c
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 4 deletions.
8 changes: 7 additions & 1 deletion Readme.html
Expand Up @@ -281,9 +281,15 @@ <h2>Hints</h2>

<h2>Changes</h2>

<p>-version 3.25
<ul>
<li>GitHub Issue #228</li>
<ul>
</p>

<p>-version 3.24 on November 1, 2018
<ul>
<li>Java 11 supports.</li>
<li>Java 11 supports.</li>
<li>JIRA JASSIST-267.</li>
<li>Github PR #218.</li>
</ul>
Expand Down
Binary file modified javassist.jar
Binary file not shown.
11 changes: 8 additions & 3 deletions src/main/javassist/util/proxy/ProxyFactory.java
Expand Up @@ -622,7 +622,7 @@ private void createClass3(ClassLoader cl, Lookup lookup) {
* {@code java.lang.invoke.MethodHandles.Lookup}.
*/
private Class<?> getClassInTheSamePackage() {
if (basename.startsWith("javassist.util.proxy.")) // maybe the super class is java.*
if (basename.startsWith(packageForJavaBase)) // maybe the super class is java.*
return this.getClass();
else if (superClass != null && superClass != OBJECT_TYPE)
return superClass;
Expand Down Expand Up @@ -921,10 +921,15 @@ private void checkClassAndSuperName() {
if (Modifier.isFinal(superClass.getModifiers()))
throw new RuntimeException(superName + " is final");

if (basename.startsWith("java.") || onlyPublicMethods)
basename = "javassist.util.proxy." + basename.replace('.', '_');
// Since java.base module is not opened, its proxy class should be
// in a different (open) module. Otherwise, it could not be created
// by reflection.
if (basename.startsWith("java.") || basename.startsWith("jdk.") || onlyPublicMethods)
basename = packageForJavaBase + basename.replace('.', '_');
}

private static final String packageForJavaBase = "javassist.util.proxy.";

private void allocateClassName() {
classname = makeProxyName(basename);
}
Expand Down
12 changes: 12 additions & 0 deletions src/test/javassist/proxyfactory/ProxyFactoryTest.java
Expand Up @@ -140,4 +140,16 @@ public Object invoke(Object self, Method thisMethod,
}
});
}

public void testJava11jdk() throws Exception {
ProxyFactory factory = new ProxyFactory();
factory.setSuperclass(jdk.javadoc.doclet.StandardDoclet.class);
jdk.javadoc.doclet.StandardDoclet e = (jdk.javadoc.doclet.StandardDoclet)factory.create(null, null, new MethodHandler() {
@Override
public Object invoke(Object self, Method thisMethod,
Method proceed, Object[] args) throws Throwable {
return proceed.invoke(self, args);
}
});
}
}

0 comments on commit 9cfa81c

Please sign in to comment.