public static ClassHolder copyClass(ClassReader original, boolean withPrograms) { return copyClass(original, new ClassHolder(original.getName()), withPrograms); }
private ClassHolder readClass(InputStream stream, String name) throws IOException { DataInput input = new DataInputStream(stream); ClassHolder cls = new ClassHolder(name); cls.setLevel(accessLevels[input.readByte()]); cls.getModifiers().addAll(unpackModifiers(input.readInt())); int parentIndex = input.readInt(); cls.setParent(parentIndex >= 0 ? symbolTable.at(parentIndex) : null); int ownerIndex = input.readInt(); cls.setOwnerName(ownerIndex >= 0 ? symbolTable.at(ownerIndex) : null); int ifaceCount = input.readByte(); for (int i = 0; i < ifaceCount; ++i) { cls.getInterfaces().add(symbolTable.at(input.readInt())); } readAnnotations(input, cls.getAnnotations()); int fieldCount = input.readShort(); for (int i = 0; i < fieldCount; ++i) { cls.addField(readField(input)); } int methodCount = input.readShort(); for (int i = 0; i < methodCount; ++i) { cls.addMethod(readMethod(stream)); } return cls; }
public ClassHolder parseClass(ClassNode node) { ClassHolder cls = new ClassHolder(referenceCache.getCached(node.name.replace('/', '.'))); parseModifiers(node.access, cls, DECL_CLASS); if (node.superName != null) {
private void createAnnotationClass(DependencyAgent agent, String className) { String readerClassName = className + "$$__annotations__$$"; if (agent.getClassSource().get(readerClassName) != null) { return; } ClassHolder cls = new ClassHolder(className + "$$__annotations__$$"); cls.setLevel(AccessLevel.PUBLIC); cls.setOwnerName("java.lang.Object"); cls.getInterfaces().add(PlatformAnnotationProvider.class.getName()); MethodHolder ctor = new MethodHolder("<init>", ValueType.VOID); ctor.setLevel(AccessLevel.PUBLIC); ProgramEmitter pe = ProgramEmitter.create(ctor, agent.getClassHierarchy()); ValueEmitter thisVar = pe.var(0, cls); thisVar.invokeSpecial(Object.class, "<init>").exit(); ClassReader annotatedClass = agent.getClassSource().get(className); cls.addMethod(ctor); cls.addMethod(addReader(agent, annotatedClass)); agent.submitClass(cls); }
public ClassHolder rename(ClassHolder cls) { ClassHolder renamedCls = new ClassHolder(classNameMapper.map(cls.getName())); renamedCls.getModifiers().addAll(cls.getModifiers()); renamedCls.setLevel(cls.getLevel());
ClassHolder implementor = new ClassHolder(key + "$lambda$_" + id + "_" + subId); lambdaIdsByMethod.put(callSite.getCaller(), subId + 1);
private ClassHolder createImplementor(ClassHierarchy hierarchy, String annotationType, String implementorName) { ClassHolder implementor = new ClassHolder(implementorName); implementor.setParent("java.lang.Object"); implementor.getInterfaces().add(annotationType);
ClassHolder cls = new ClassHolder(implRef.getClassName()); cls.setLevel(AccessLevel.PUBLIC); cls.setParent("java.lang.Object");
@SuppressWarnings("WeakerAccess") public static <T> Value<T> proxy(ReflectClass<T> type, InvocationHandler<T> handler) { ValueType innerType = ((ReflectClassImpl<?>) type).type; ClassHolder cls = new ClassHolder(createProxyName(type.getName())); cls.setLevel(AccessLevel.PUBLIC);
private ClassHolder readClass(InputStream stream, String name) throws IOException { DataInput input = new DataInputStream(stream); ClassHolder cls = new ClassHolder(name); cls.setLevel(accessLevels[input.readByte()]); cls.getModifiers().addAll(unpackModifiers(input.readInt())); int parentIndex = input.readInt(); cls.setParent(parentIndex >= 0 ? symbolTable.at(parentIndex) : null); int ownerIndex = input.readInt(); cls.setOwnerName(ownerIndex >= 0 ? symbolTable.at(ownerIndex) : null); int ifaceCount = input.readByte(); for (int i = 0; i < ifaceCount; ++i) { cls.getInterfaces().add(symbolTable.at(input.readInt())); } readAnnotations(input, cls.getAnnotations()); int fieldCount = input.readShort(); for (int i = 0; i < fieldCount; ++i) { cls.addField(readField(input)); } int methodCount = input.readShort(); for (int i = 0; i < methodCount; ++i) { cls.addMethod(readMethod(stream)); } return cls; }
public ClassHolder parseClass(ClassNode node) { ClassHolder cls = new ClassHolder(node.name.replace('/', '.')); parseModifiers(node.access, cls); if (node.superName != null) {
public ClassHolder rename(ClassHolder cls) { ClassHolder renamedCls = new ClassHolder(classNameMapper.map(cls.getName())); renamedCls.getModifiers().addAll(cls.getModifiers()); renamedCls.setLevel(cls.getLevel());
public static ClassHolder copyClass(ClassReader original) { ClassHolder copy = new ClassHolder(original.getName()); copy.setLevel(original.getLevel()); copy.getModifiers().addAll(original.readModifiers()); copy.setParent(original.getParent()); copy.getInterfaces().addAll(original.getInterfaces()); for (MethodReader method : original.getMethods()) { copy.addMethod(copyMethod(method)); } for (FieldReader field : original.getFields()) { copy.addField(copyField(field)); } copy.setOwnerName(original.getOwnerName()); copyAnnotations(original.getAnnotations(), copy.getAnnotations()); return copy; }
ClassHolder cls = new ClassHolder(implRef.getClassName()); cls.setLevel(AccessLevel.PUBLIC); cls.setParent("java.lang.Object");
@SuppressWarnings("WeakerAccess") public static <T> Value<T> proxy(ReflectClass<T> type, InvocationHandler<T> handler) { ValueType innerType = ((ReflectClassImpl<?>) type).type; ClassHolder cls = new ClassHolder(createProxyName(type.getName())); cls.setLevel(AccessLevel.PUBLIC);