/** {@inheritDoc} */ @Override public byte[] loadReplace(InputStream in, final String originalName, final String replaceName) { ClassReader rdr; try { rdr = new ClassReader(in); } catch (IOException e) { throw new RuntimeException(e); } ClassWriter w = new ClassWriter(Opcodes.ASM4); rdr.accept(new RemappingClassAdapter(w, new Remapper() { /** */ String replaceType = replaceName.replace('.', '/'); /** */ String nameType = originalName.replace('.', '/'); @Override public String map(String type) { if (type.equals(replaceType)) return nameType; return type; } }), ClassReader.EXPAND_FRAMES); return w.toByteArray(); }
@Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { super.visit(version, access, name, signature, superName, interfaces); clzName = name; }
private MethodVisitor superMethodVisitor(int access, String name, String desc, String signature, String[] exceptions) { return super.visitMethod(access, name, desc, signature, exceptions); }
@Override public AnnotationVisitor visitTypeAnnotation( final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) { AnnotationVisitor annotationVisitor = super.visitTypeAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible); return annotationVisitor == null ? null : createRemappingAnnotationAdapter(annotationVisitor); }
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { String newDesc = remapper.mapMethodDesc(desc); MethodVisitor mv = super.visitMethod(access, remapper.mapMethodName( className, name, desc), newDesc, remapper.mapSignature( signature, false), exceptions == null ? null : remapper.mapTypes(exceptions)); return mv == null ? null : createRemappingMethodAdapter(access, newDesc, mv); }
@Override public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { FieldVisitor fv = super.visitField(access, remapper.mapFieldName(className, name, desc), remapper.mapDesc(desc), remapper.mapSignature(signature, true), remapper.mapValue(value)); return fv == null ? null : createRemappingFieldAdapter(fv); }
@Override public AnnotationVisitor visitTypeAnnotation( final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) { AnnotationVisitor annotationVisitor = super.visitTypeAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible); return annotationVisitor == null ? null : createRemappingAnnotationAdapter(annotationVisitor); }
@Override public MethodVisitor visitMethod( final int access, final String name, final String descriptor, final String signature, final String[] exceptions) { String newDescriptor = remapper.mapMethodDesc(descriptor); MethodVisitor methodVisitor = super.visitMethod( access, remapper.mapMethodName(className, name, descriptor), newDescriptor, remapper.mapSignature(signature, false), exceptions == null ? null : remapper.mapTypes(exceptions)); return methodVisitor == null ? null : createRemappingMethodAdapter(access, newDescriptor, methodVisitor); }
@Override public FieldVisitor visitField( final int access, final String name, final String descriptor, final String signature, final Object value) { FieldVisitor fieldVisitor = super.visitField( access, remapper.mapFieldName(className, name, descriptor), remapper.mapDesc(descriptor), remapper.mapSignature(signature, true), remapper.mapValue(value)); return fieldVisitor == null ? null : createRemappingFieldAdapter(fieldVisitor); }
remapper.inputOutput.put( "appeng/api/parts/LayerBase", n.superName ); remapper.inputOutput.put( originalName, n.name ); n.accept( new RemappingClassAdapter( cw, remapper ) );
@Override public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) { AnnotationVisitor annotationVisitor = super.visitAnnotation(remapper.mapDesc(descriptor), visible); return annotationVisitor == null ? null : createRemappingAnnotationAdapter(annotationVisitor); }
@Override public MethodVisitor visitMethod( final int access, final String name, final String descriptor, final String signature, final String[] exceptions) { String newDescriptor = remapper.mapMethodDesc(descriptor); MethodVisitor methodVisitor = super.visitMethod( access, remapper.mapMethodName(className, name, descriptor), newDescriptor, remapper.mapSignature(signature, false), exceptions == null ? null : remapper.mapTypes(exceptions)); return methodVisitor == null ? null : createRemappingMethodAdapter(access, newDescriptor, methodVisitor); }
@Override public FieldVisitor visitField( final int access, final String name, final String descriptor, final String signature, final Object value) { FieldVisitor fieldVisitor = super.visitField( access, remapper.mapFieldName(className, name, descriptor), remapper.mapDesc(descriptor), remapper.mapSignature(signature, true), remapper.mapValue(value)); return fieldVisitor == null ? null : createRemappingFieldAdapter(fieldVisitor); }
@Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { // For java/lang/Object redefinition String newName = remapper.mapType(name); if (newName.equals("java/lang/Object")) { superName = null; isObject = true; } super.visit(version, access, name, signature, superName, interfaces); }
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { return super.visitMethod(access, stripMethodSuffix(name), desc, signature, exceptions); }
@Override public ClassVisitor transform(ClassVisitor v) { return new RemappingClassAdapter(v, remapper); }
@Override public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) { AnnotationVisitor annotationVisitor = super.visitAnnotation(remapper.mapDesc(descriptor), visible); return annotationVisitor == null ? null : createRemappingAnnotationAdapter(annotationVisitor); }
@Override public MethodVisitor visitMethod( final int access, final String name, final String descriptor, final String signature, final String[] exceptions) { String newDescriptor = remapper.mapMethodDesc(descriptor); MethodVisitor methodVisitor = super.visitMethod( access, remapper.mapMethodName(className, name, descriptor), newDescriptor, remapper.mapSignature(signature, false), exceptions == null ? null : remapper.mapTypes(exceptions)); return methodVisitor == null ? null : createRemappingMethodAdapter(access, newDescriptor, methodVisitor); }
@Override public FieldVisitor visitField( final int access, final String name, final String descriptor, final String signature, final Object value) { FieldVisitor fieldVisitor = super.visitField( access, remapper.mapFieldName(className, name, descriptor), remapper.mapDesc(descriptor), remapper.mapSignature(signature, true), remapper.mapValue(value)); return fieldVisitor == null ? null : createRemappingFieldAdapter(fieldVisitor); }
@Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { ((DependencyFinderRemapper) remapper).setClassName(name); super.visit(version, access, name, signature, superName, interfaces); }