From dfd0733e1f73853453ff76086481ebec2e88a624 Mon Sep 17 00:00:00 2001 From: chibash Date: Thu, 1 Jun 2017 22:46:39 +0900 Subject: [PATCH] modifies CtClass#setModifiers() to correctly support inner classes. --- javassist.jar | Bin 727192 -> 727665 bytes src/main/javassist/ClassPool.java | 2 +- src/main/javassist/CtClassType.java | 45 +++++++++--- src/main/javassist/CtNewNestedClass.java | 67 ------------------ .../bytecode/InnerClassesAttribute.java | 18 +++++ src/test/javassist/JvstTest5.java | 55 ++++++++++++++ src/test/test5/InnerModifier.java | 6 ++ 7 files changed, 117 insertions(+), 76 deletions(-) delete mode 100644 src/main/javassist/CtNewNestedClass.java create mode 100644 src/test/test5/InnerModifier.java diff --git a/javassist.jar b/javassist.jar index 2f0ef0fb3726d4d826e5a370ff51654f993468a3..98e6eebb0376f2ac899e3502840bca727ffa915f 100644 GIT binary patch delta 39389 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 delta 38475 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 F{|7v?px*!h diff --git a/src/main/javassist/ClassPool.java b/src/main/javassist/ClassPool.java index 4be35b5f..89a0067e 100644 --- a/src/main/javassist/ClassPool.java +++ b/src/main/javassist/ClassPool.java @@ -864,7 +864,7 @@ public class ClassPool { */ synchronized CtClass makeNestedClass(String classname) { checkNotFrozen(classname); - CtClass clazz = new CtNewNestedClass(classname, this, false, null); + CtClass clazz = new CtNewClass(classname, this, false, null); cacheCtClass(classname, clazz, true); return clazz; } diff --git a/src/main/javassist/CtClassType.java b/src/main/javassist/CtClassType.java index 29aace81..b0a8819d 100644 --- a/src/main/javassist/CtClassType.java +++ b/src/main/javassist/CtClassType.java @@ -453,17 +453,46 @@ class CtClassType extends CtClass { } public void setModifiers(int mod) { + checkModify(); + updateInnerEntry(mod, getName(), this, true); ClassFile cf = getClassFile2(); - if (Modifier.isStatic(mod)) { - int flags = cf.getInnerAccessFlags(); - if (flags != -1 && (flags & AccessFlag.STATIC) != 0) - mod = mod & ~Modifier.STATIC; - else - throw new RuntimeException("cannot change " + getName() + " into a static class"); + cf.setAccessFlags(AccessFlag.of(mod & ~Modifier.STATIC)); + } + + private static void updateInnerEntry(int newMod, String name, CtClass clazz, boolean outer) { + ClassFile cf = clazz.getClassFile2(); + InnerClassesAttribute ica + = (InnerClassesAttribute)cf.getAttribute(InnerClassesAttribute.tag); + if (ica != null) { + // If the class is a static inner class, its modifier + // does not contain the static bit. Its inner class attribute + // contains the static bit. + int mod = newMod & ~Modifier.STATIC; + int i = ica.find(name); + if (i >= 0) { + int isStatic = ica.accessFlags(i) & AccessFlag.STATIC; + if (isStatic != 0 || !Modifier.isStatic(newMod)) { + clazz.checkModify(); + ica.setAccessFlags(i, AccessFlag.of(mod) | isStatic); + String outName = ica.outerClass(i); + if (outName != null && outer) + try { + CtClass parent = clazz.getClassPool().get(outName); + updateInnerEntry(mod, name, parent, false); + } + catch (NotFoundException e) { + throw new RuntimeException("cannot find the declaring class: " + + outName); + } + + return; + } + } } - checkModify(); - cf.setAccessFlags(AccessFlag.of(mod)); + if (Modifier.isStatic(newMod)) + throw new RuntimeException("cannot change " + Descriptor.toJavaName(name) + + " into a static class"); } //@Override diff --git a/src/main/javassist/CtNewNestedClass.java b/src/main/javassist/CtNewNestedClass.java deleted file mode 100644 index 8177fde3..00000000 --- a/src/main/javassist/CtNewNestedClass.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Javassist, a Java-bytecode translator toolkit. - * Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. Alternatively, the contents of this file may be used under - * the terms of the GNU Lesser General Public License Version 2.1 or later, - * or the Apache License Version 2.0. - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - */ - -package javassist; - -import javassist.bytecode.ClassFile; -import javassist.bytecode.AccessFlag; -import javassist.bytecode.InnerClassesAttribute; - -/** - * A newly created public nested class. - */ -class CtNewNestedClass extends CtNewClass { - CtNewNestedClass(String realName, ClassPool cp, boolean isInterface, - CtClass superclass) { - super(realName, cp, isInterface, superclass); - } - - /** - * This method does not change the STATIC bit. The original value is kept. - */ - public void setModifiers(int mod) { - mod = mod & ~Modifier.STATIC; - super.setModifiers(mod); - updateInnerEntry(mod, getName(), this, true); - } - - private static void updateInnerEntry(int mod, String name, CtClass clazz, boolean outer) { - ClassFile cf = clazz.getClassFile2(); - InnerClassesAttribute ica = (InnerClassesAttribute)cf.getAttribute( - InnerClassesAttribute.tag); - if (ica == null) - return; - - int n = ica.tableLength(); - for (int i = 0; i < n; i++) - if (name.equals(ica.innerClass(i))) { - int acc = ica.accessFlags(i) & AccessFlag.STATIC; - ica.setAccessFlags(i, mod | acc); - String outName = ica.outerClass(i); - if (outName != null && outer) - try { - CtClass parent = clazz.getClassPool().get(outName); - updateInnerEntry(mod, name, parent, false); - } - catch (NotFoundException e) { - throw new RuntimeException("cannot find the declaring class: " - + outName); - } - - break; - } - } -} diff --git a/src/main/javassist/bytecode/InnerClassesAttribute.java b/src/main/javassist/bytecode/InnerClassesAttribute.java index cf021791..b5b845d7 100644 --- a/src/main/javassist/bytecode/InnerClassesAttribute.java +++ b/src/main/javassist/bytecode/InnerClassesAttribute.java @@ -64,8 +64,10 @@ public class InnerClassesAttribute extends AttributeInfo { /** * Returns the class name indicated * by classes[nth].inner_class_info_index. + * The class name is fully-qualified and separated by dot. * * @return null or the class name. + * @see ConstPool#getClassInfo(int) */ public String innerClass(int nth) { int i = innerClassIndex(nth); @@ -156,6 +158,22 @@ public class InnerClassesAttribute extends AttributeInfo { ByteArray.write16bit(flags, get(), nth * 8 + 8); } + /** + * Finds the entry for the given inner class. + * + * @param name the fully-qualified class name separated by dot and $. + * @return the index or -1 if not found. + * @since 3.22 + */ + public int find(String name) { + int n = tableLength(); + for (int i = 0; i < n; i++) + if (name.equals(innerClass(i))) + return i; + + return -1; + } + /** * Appends a new entry. * diff --git a/src/test/javassist/JvstTest5.java b/src/test/javassist/JvstTest5.java index 26474bb7..76d0c1a2 100644 --- a/src/test/javassist/JvstTest5.java +++ b/src/test/javassist/JvstTest5.java @@ -3,6 +3,7 @@ package javassist; import java.lang.annotation.Annotation; import java.lang.reflect.TypeVariable; +import javassist.bytecode.AccessFlag; import javassist.bytecode.AnnotationsAttribute; import javassist.bytecode.AttributeInfo; import javassist.bytecode.ClassFile; @@ -291,4 +292,58 @@ public class JvstTest5 extends JvstTestRoot { Object obj = make(cc.getName()); assertEquals(3, invoke(obj, "run")); } + + public void testInnerClassModifiers() throws Exception { + CtClass cc = sloader.get("test5.InnerModifier$NonStatic"); + try { + cc.setModifiers(Modifier.PUBLIC | Modifier.STATIC); + fail(); + } + catch (RuntimeException e) { + if (!e.getMessage().startsWith("cannot change ")) + fail(); + } + + cc.setModifiers(Modifier.PUBLIC); + cc.writeFile(); + + assertEquals(Modifier.PUBLIC, cc.getModifiers()); + InnerClassesAttribute ica = getInnerClassAttr(cc); + int i = ica.find("test5.InnerModifier$NonStatic"); + assertTrue(i >= 0); + assertEquals(Modifier.PUBLIC, ica.accessFlags(i)); + + CtClass cc2 = sloader.get("test5.InnerModifier$Static"); + + InnerClassesAttribute ica3 = getInnerClassAttr(cc2); + int i3 = ica3.find("test5.InnerModifier$Static"); + assertTrue(i3 >= 0); + assertEquals(AccessFlag.STATIC, ica3.accessFlags(i3)); + + cc2.setModifiers(Modifier.PROTECTED | Modifier.STATIC); + cc2.setModifiers(Modifier.PUBLIC); + cc2.writeFile(); + + assertEquals(Modifier.PUBLIC | Modifier.STATIC, cc2.getModifiers()); + InnerClassesAttribute ica2 = getInnerClassAttr(cc2); + int i2 = ica2.find("test5.InnerModifier$Static"); + assertTrue(i2 >= 0); + assertEquals(AccessFlag.PUBLIC | AccessFlag.STATIC, ica2.accessFlags(i2)); + + CtClass cc3 = cc.getDeclaringClass(); + assertTrue(cc3.isModified()); + cc3.writeFile(); + + InnerClassesAttribute ica4 = getInnerClassAttr(cc3); + int i4 = ica4.find("test5.InnerModifier$Static"); + assertTrue(i4 >= 0); + assertEquals(AccessFlag.PUBLIC | AccessFlag.STATIC, ica4.accessFlags(i4)); + int i5 = ica4.find("test5.InnerModifier$NonStatic"); + assertTrue(i5 >= 0); + assertEquals(Modifier.PUBLIC, ica4.accessFlags(i5)); + } + + private InnerClassesAttribute getInnerClassAttr(CtClass cc) { + return (InnerClassesAttribute)cc.getClassFile2().getAttribute(InnerClassesAttribute.tag); + } } diff --git a/src/test/test5/InnerModifier.java b/src/test/test5/InnerModifier.java new file mode 100644 index 00000000..5093e1fd --- /dev/null +++ b/src/test/test5/InnerModifier.java @@ -0,0 +1,6 @@ +package test5; + +public class InnerModifier { + protected class NonStatic {} + static class Static {} +} -- 2.39.5