类org.objectweb.asm.signature.SignatureReader源码实例Demo

下面列出了怎么用org.objectweb.asm.signature.SignatureReader的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: spring-graalvm-native   文件: Type.java
/**
 * Compute all the types referenced in the signature of this type.
 *
 * @return
 */
public List<String> getTypesInSignature() {
	if (dimensions > 0) {
		return Collections.emptyList();
	} else if (node.signature == null) {
		// With no generic signature it is just superclass and interfaces
		List<String> ls = new ArrayList<>();
		if (node.superName != null) {
			ls.add(node.superName);
		}
		if (node.interfaces != null) {
			ls.addAll(node.interfaces);
		}
		return ls;
	} else {
		// Pull out all the types from the generic signature
		SignatureReader reader = new SignatureReader(node.signature);
		TypeCollector tc = new TypeCollector();
		reader.accept(tc);
		return tc.getTypes();
	}
}
 
源代码2 项目: Concurnas   文件: Textifier.java
/**
 * Appends the Java generic type declaration corresponding to the given signature.
 *
 * @param name a class, field or method name.
 * @param signature a class, field or method signature.
 */
private void appendJavaDeclaration(final String name, final String signature) {
  TraceSignatureVisitor traceSignatureVisitor = new TraceSignatureVisitor(access);
  new SignatureReader(signature).accept(traceSignatureVisitor);
  stringBuilder.append("// declaration: ");
  if (traceSignatureVisitor.getReturnType() != null) {
    stringBuilder.append(traceSignatureVisitor.getReturnType());
    stringBuilder.append(' ');
  }
  stringBuilder.append(name);
  stringBuilder.append(traceSignatureVisitor.getDeclaration());
  if (traceSignatureVisitor.getExceptions() != null) {
    stringBuilder.append(" throws ").append(traceSignatureVisitor.getExceptions());
  }
  stringBuilder.append('\n');
}
 
源代码3 项目: java-specialagent   文件: Fingerprinter.java
@Override
public FieldVisitor visitField(final int access, final String name, final String desc, final String signature, final Object value) {
  if (Visibility.get(access) == Visibility.PRIVATE || FingerprintUtil.isSynthetic(access))
    return null;

  final FieldVisitor fieldVisitor = super.visitField(access, name, desc, signature, value);
  final Type type = Type.getType(desc);
  if (filtering)
    return null;

  addClassRef(type);
  final FieldLog log = addFieldRef(Type.getObjectType(className), name);
  if (log == null)
    return null;

  if (signature != null)
    new SignatureReader(signature).accept(signatureVisitor);

  log.resolve(typeToClassName(type, false));
  return fieldVisitor;
}
 
源代码4 项目: jig   文件: AsmClassVisitor.java
private FieldType typeDescriptorToFieldType(String descriptor, String signature) {
    if (signature == null) {
        return typeDescriptorToFieldType(descriptor);
    }

    ArrayList<TypeIdentifier> typeParameters = new ArrayList<>();
    new SignatureReader(signature).accept(
            new SignatureVisitor(this.api) {
                @Override
                public SignatureVisitor visitTypeArgument(char wildcard) {
                    if (wildcard == '=') {
                        return new SignatureVisitor(this.api) {
                            @Override
                            public void visitClassType(String name) {
                                typeParameters.add(new TypeIdentifier(name));
                            }
                        };
                    }
                    return super.visitTypeArgument(wildcard);
                }
            }
    );
    TypeIdentifiers typeIdentifiers = new TypeIdentifiers(typeParameters);
    return new FieldType(typeDescriptorToIdentifier(descriptor), typeIdentifiers);
}
 
源代码5 项目: jig   文件: AsmClassVisitor.java
private List<TypeIdentifier> extractClassTypeFromGenericsSignature(String signature) {
    // ジェネリクスを使用している場合だけsignatureが入る
    List<TypeIdentifier> useTypes = new ArrayList<>();
    if (signature != null) {
        new SignatureReader(signature).accept(
                new SignatureVisitor(this.api) {
                    @Override
                    public void visitClassType(String name) {
                        // 引数と戻り値に登場するクラスを収集
                        useTypes.add(new TypeIdentifier(name));
                    }
                }
        );
    }
    return useTypes;
}
 
源代码6 项目: AVM   文件: ClassDependencyVisitor.java
@Override
public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) {

    if (signature == null) {
        dependencyCollector.addMethodDescriptor(descriptor);
    } else {
        new SignatureReader(signature).accept(signatureVisitor);
    }

    if (exceptions != null) {
        for (String ex : exceptions)
            dependencyCollector.addType(ex);
    }

    MethodVisitor mv = super.visitMethod(access, name, descriptor, signature, exceptions);
    return new MethodDependencyVisitor(mv, signatureVisitor, dependencyCollector, preserveDebugInfo);
}
 
源代码7 项目: JByteMod-Beta   文件: Textifier.java
@Override
public void visitLocalVariable(final String name, final String desc, final String signature, final Label start, final Label end, final int index) {
  buf.setLength(0);
  buf.append(tab2).append("LOCALVARIABLE ").append(name).append(' ');
  appendDescriptor(FIELD_DESCRIPTOR, desc);
  buf.append(' ');
  appendLabel(start);
  buf.append(' ');
  appendLabel(end);
  buf.append(' ').append(index).append('\n');

  if (signature != null) {
    buf.append(tab2);
    appendDescriptor(FIELD_SIGNATURE, signature);

    TraceSignatureVisitor sv = new TraceSignatureVisitor(0);
    SignatureReader r = new SignatureReader(signature);
    r.acceptType(sv);
    buf.append(tab2).append("// declaration: ").append(sv.getDeclaration()).append('\n');
  }
  text.add(buf.toString());
}
 
源代码8 项目: meghanada-server   文件: FieldAnalyzeVisitor.java
FieldAnalyzeVisitor parseSignature() {
  final EntryMessage m = log.traceEntry("fieldSignature={}", fieldSignature);
  boolean isStatic = (Opcodes.ACC_STATIC & this.access) > 0;
  SignatureReader signatureReader = new SignatureReader(this.fieldSignature);
  FieldSignatureVisitor visitor;
  if (isStatic) {
    visitor = new FieldSignatureVisitor(this.name, new ArrayList<>(4));
  } else {
    visitor = new FieldSignatureVisitor(this.name, this.classAnalyzeVisitor.classTypeParameters);
  }
  if (this.typeMap != null) {
    visitor.setTypeMap(this.typeMap);
  }

  this.fieldSignatureVisitor = visitor;
  signatureReader.acceptType(fieldSignatureVisitor);
  return log.traceExit(m, this);
}
 
源代码9 项目: meghanada-server   文件: MethodAnalyzeVisitor.java
MethodAnalyzeVisitor parseSignature() {
  final EntryMessage entryMessage =
      log.traceEntry("name={} methodSignature={}", this.name, this.methodSignature);
  final boolean isStatic = (Opcodes.ACC_STATIC & this.access) > 0;
  final SignatureReader signatureReader = new SignatureReader(this.methodSignature);
  MethodSignatureVisitor visitor;
  if (isStatic) {
    visitor = new MethodSignatureVisitor(this.name, new ArrayList<>(4));
  } else {
    visitor = new MethodSignatureVisitor(this.name, this.classAnalyzeVisitor.classTypeParameters);
  }
  if (this.typeMap != null) {
    visitor.setTypeMap(this.typeMap);
  }

  signatureReader.accept(visitor);

  this.formalType = visitor.getFormalType();
  this.parameterTypes = visitor.getParameterTypes();
  this.typeParameters = visitor.getTypeParameters();
  this.returnType = visitor.getReturnType();
  log.traceExit(entryMessage);
  return this;
}
 
@Override
public MethodVisitor visitMethod(
    int access, String name, String desc, String signature, String[] exceptions) {

  String target = signature;
  if (target == null) {
    target = desc;
  }
  SignatureReader signatureReader = new SignatureReader(target);
  this.visitor = new MethodSignatureVisitor(name, new ArrayList<>());
  signatureReader.accept(this.visitor);

  System.out.println(name);
  System.out.println(this.visitor.getFormalType());
  System.out.println(this.visitor.getParameterTypes());
  System.out.println(this.visitor.getTypeParameters());
  System.out.println(this.visitor.getReturnType());

  // result.put(name, this.visitor.getFormalType());

  return super.visitMethod(access, name, desc, signature, exceptions);
}
 
源代码11 项目: JReFrameworker   文件: Textifier.java
/**
 * Appends the Java generic type declaration corresponding to the given signature.
 *
 * @param name a class, field or method name.
 * @param signature a class, field or method signature.
 */
private void appendJavaDeclaration(final String name, final String signature) {
  TraceSignatureVisitor traceSignatureVisitor = new TraceSignatureVisitor(access);
  new SignatureReader(signature).accept(traceSignatureVisitor);
  stringBuilder.append("// declaration: ");
  if (traceSignatureVisitor.getReturnType() != null) {
    stringBuilder.append(traceSignatureVisitor.getReturnType());
    stringBuilder.append(' ');
  }
  stringBuilder.append(name);
  stringBuilder.append(traceSignatureVisitor.getDeclaration());
  if (traceSignatureVisitor.getExceptions() != null) {
    stringBuilder.append(" throws ").append(traceSignatureVisitor.getExceptions());
  }
  stringBuilder.append('\n');
}
 
源代码12 项目: JReFrameworker   文件: Textifier.java
/**
 * Appends the Java generic type declaration corresponding to the given signature.
 *
 * @param name a class, field or method name.
 * @param signature a class, field or method signature.
 */
private void appendJavaDeclaration(final String name, final String signature) {
  TraceSignatureVisitor traceSignatureVisitor = new TraceSignatureVisitor(access);
  new SignatureReader(signature).accept(traceSignatureVisitor);
  stringBuilder.append("// declaration: ");
  if (traceSignatureVisitor.getReturnType() != null) {
    stringBuilder.append(traceSignatureVisitor.getReturnType());
    stringBuilder.append(' ');
  }
  stringBuilder.append(name);
  stringBuilder.append(traceSignatureVisitor.getDeclaration());
  if (traceSignatureVisitor.getExceptions() != null) {
    stringBuilder.append(" throws ").append(traceSignatureVisitor.getExceptions());
  }
  stringBuilder.append('\n');
}
 
源代码13 项目: CodenameOne   文件: NameTranslatorClassVisitor.java
private String translateSignature(final String signature, boolean type) {
	if (signature == null) {
		return null;
	}
	SignatureReader r = new SignatureReader(signature);
	SignatureWriter w = new SignatureWriter() {
	    public void visitClassType(final String name) {
	    	String n = translator.getClassMirrorTranslation(name);
	    	super.visitClassType(n);
	    }
	};

	if (type) {
		r.acceptType(w);		
	} else {
		r.accept(w);		
	}
	return w.toString();
}
 
源代码14 项目: Mixin   文件: MixinApplicatorStandard.java
protected void mergeNewFields(MixinTargetContext mixin) {
    for (FieldNode field : mixin.getFields()) {
        FieldNode target = this.findTargetField(field);
        if (target == null) {
            // This is just a local field, so add it
            this.targetClass.fields.add(field);
            
            if (field.signature != null) {
                if (this.mergeSignatures) {
                    SignatureVisitor sv = mixin.getSignature().getRemapper();
                    new SignatureReader(field.signature).accept(sv);
                    field.signature = sv.toString();
                } else {
                    field.signature = null;
                }
            }
        }
    }
}
 
源代码15 项目: spring-boot-graal-feature   文件: Type.java
public List<String> getTypesInSignature() {
	if (node.signature == null) {
		return Collections.emptyList();
	} else {
		SignatureReader reader = new SignatureReader(node.signature);
		TypeCollector tc = new TypeCollector();
		reader.accept(tc);
		return tc.getTypes();
	}
}
 
源代码16 项目: spring-graalvm-native   文件: Type.java
public String findTypeParameterInSupertype(String supertype, int typeParameterNumber) {
	if (node.signature == null) {
		return null;
	}
	SignatureReader reader = new SignatureReader(node.signature);
	TypeParamFinder tpm = new TypeParamFinder(supertype);
	reader.accept(tpm);
	return tpm.getTypeParameter(typeParameterNumber);
}
 
源代码17 项目: Concurnas   文件: DependencyAnalyzer.java
private void addToDeps(String signature, String desc) {
	if(signature == null) {
		signature = desc;
	}
	final SignatureReader signatureReader = new SignatureReader(signature);
	SignatureVisitor visitor = new MethodSignatureVisitor(this.dependencies);
	signatureReader.accept(visitor);
}
 
源代码18 项目: Concurnas   文件: Remapper.java
/**
 * Returns the given signature, remapped with the {@link SignatureVisitor} returned by {@link
 * #createSignatureRemapper(SignatureVisitor)}.
 *
 * @param signature a <i>JavaTypeSignature</i>, <i>ClassSignature</i> or <i>MethodSignature</i>.
 * @param typeSignature whether the given signature is a <i>JavaTypeSignature</i>.
 * @return signature the given signature, remapped with the {@link SignatureVisitor} returned by
 *     {@link #createSignatureRemapper(SignatureVisitor)}.
 */
public String mapSignature(final String signature, final boolean typeSignature) {
  if (signature == null) {
    return null;
  }
  SignatureReader signatureReader = new SignatureReader(signature);
  SignatureWriter signatureWriter = new SignatureWriter();
  SignatureVisitor signatureRemapper = createSignatureRemapper(signatureWriter);
  if (typeSignature) {
    signatureReader.acceptType(signatureRemapper);
  } else {
    signatureReader.accept(signatureRemapper);
  }
  return signatureWriter.toString();
}
 
源代码19 项目: AVM   文件: ClassDependencyVisitor.java
@Override
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
    // Signature may be null if the class is not a generic one, and does not extend or implement generic classes or interfaces.
    if (signature == null) {
        dependencyCollector.addType(superName);
        if (interfaces != null) {
            for (String i : interfaces)
                dependencyCollector.addType(i);
        }
    } else {
        new SignatureReader(signature).accept(signatureVisitor);
    }

    super.visit(version, access, name, signature, superName, interfaces);
}
 
源代码20 项目: AVM   文件: ClassDependencyVisitor.java
@Override
public FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) {

    if (signature == null) {
        dependencyCollector.addDescriptor(descriptor);
    } else {
        new SignatureReader(signature).acceptType(signatureVisitor);
    }
    return super.visitField(access, name, descriptor, signature, value);
}
 
源代码21 项目: AVM   文件: MethodDependencyVisitor.java
@Override
public void visitLocalVariable(String name, String descriptor, String signature, Label start, Label end, int index) {
    if (signature == null) {
        dependencyCollector.addDescriptor(descriptor);
    } else {
        new SignatureReader(signature).acceptType(signatureVisitor);
    }

    if (preserveDebugInfo)
        super.visitLocalVariable(name, descriptor, signature, start, end, index);
}
 
源代码22 项目: jpeek   文件: TypesOf.java
@Override
public Iterator<Directive> iterator() {
    new SignatureReader(this.singature).accept(this);
    final Directives dirs = new Directives().add("args");
    for (final String type : this.types) {
        dirs.add("arg").set("?").attr("type", type).up();
    }
    dirs.up().add("return").set(this.rtype.get()).up();
    return dirs.iterator();
}
 
源代码23 项目: JByteMod-Beta   文件: Remapper.java
/**
 * Returns the given signature, remapped with the {@link SignatureVisitor} returned by {@link
 * #createSignatureRemapper(SignatureVisitor)}.
 *
 * @param signature a <i>JavaTypeSignature</i>, <i>ClassSignature</i> or <i>MethodSignature</i>.
 * @param typeSignature whether the given signature is a <i>JavaTypeSignature</i>.
 * @return signature the given signature, remapped with the {@link SignatureVisitor} returned by
 *     {@link #createSignatureRemapper(SignatureVisitor)}.
 */
public String mapSignature(final String signature, final boolean typeSignature) {
  if (signature == null) {
    return null;
  }
  SignatureReader signatureReader = new SignatureReader(signature);
  SignatureWriter signatureWriter = new SignatureWriter();
  SignatureVisitor signatureRemapper = createSignatureRemapper(signatureWriter);
  if (typeSignature) {
    signatureReader.acceptType(signatureRemapper);
  } else {
    signatureReader.accept(signatureRemapper);
  }
  return signatureWriter.toString();
}
 
源代码24 项目: JByteMod-Beta   文件: Textifier.java
@Override
public Textifier visitField(final int access, final String name, final String desc, final String signature, final Object value) {
  buf.setLength(0);
  buf.append('\n');
  if ((access & Opcodes.ACC_DEPRECATED) != 0) {
    buf.append(tab).append("// DEPRECATED\n");
  }
  buf.append(tab).append("// access flags 0x").append(Integer.toHexString(access).toUpperCase()).append('\n');
  if (signature != null) {
    buf.append(tab);
    appendDescriptor(FIELD_SIGNATURE, signature);

    TraceSignatureVisitor sv = new TraceSignatureVisitor(0);
    SignatureReader r = new SignatureReader(signature);
    r.acceptType(sv);
    buf.append(tab).append("// declaration: ").append(sv.getDeclaration()).append('\n');
  }

  buf.append(tab);
  appendAccess(access);

  appendDescriptor(FIELD_DESCRIPTOR, desc);
  buf.append(' ').append(name);
  if (value != null) {
    buf.append(" = ");
    if (value instanceof String) {
      buf.append('\"').append(value).append('\"');
    } else {
      buf.append(value);
    }
  }

  buf.append('\n');
  text.add(buf.toString());

  Textifier t = createTextifier();
  text.add(t.getText());
  return t;
}
 
源代码25 项目: meghanada-server   文件: ClassAnalyzeVisitor.java
@Override
public void visit(
    int api, int access, String name, String signature, String superClass, String[] interfaces) {
  // log.debug("Name:{}", name);
  // call class
  final boolean isInterface = (Opcodes.ACC_INTERFACE & access) == Opcodes.ACC_INTERFACE;
  // log.debug("name {} sig {} IF:{}", name, signature, isInterface);
  if (signature != null) {
    // generics
    // log.debug("name {} sig {}", name, signature);
    final SignatureReader signatureReader = new SignatureReader(signature);
    ClassSignatureVisitor classSignatureVisitor =
        new ClassSignatureVisitor(this.className, isInterface);
    signatureReader.accept(classSignatureVisitor);

    this.classTypeParameters = classSignatureVisitor.getTypeParameters();
    this.classIndex = classSignatureVisitor.getClassIndex();
    if (!this.classIndex.getSupers().contains(ClassNameUtils.OBJECT_CLASS)) {
      this.classIndex.addSuper(ClassNameUtils.OBJECT_CLASS);
    }
  } else {
    this.classTypeParameters = new ArrayList<>(4);
    final List<String> supers = new ArrayList<>(4);
    if (superClass != null) {
      final String superClassFQCN = ClassNameUtils.replaceSlash(superClass);
      supers.add(superClassFQCN);
    }
    Arrays.stream(interfaces)
        .forEach(interfaceName -> supers.add(ClassNameUtils.replaceSlash(interfaceName)));
    this.classIndex = new ClassIndex(this.className, new ArrayList<>(4), supers);
    this.classIndex.setInterface(isInterface);
  }
}
 
@Override
public FieldVisitor visitField(
    int access, String name, String desc, String signature, Object value) {
  String target = signature;
  if (target == null) {
    target = desc;
  }
  SignatureReader signatureReader = new SignatureReader(target);
  this.visitor = new FieldSignatureVisitor(name, new ArrayList<>());
  signatureReader.acceptType(this.visitor);
  result.put(name, this.visitor.getResult());
  return super.visitField(access, name, desc, signature, value);
}
 
@Override
public void visit(
    int api, int access, String name, String sig, String superClass, String[] exceptions) {
  System.out.println("NAME:" + name);
  System.out.println("SUPER:" + superClass);
  System.out.println("sig:" + sig);
  if (sig != null) {
    boolean isInterface = (Opcodes.ACC_INTERFACE & access) == Opcodes.ACC_INTERFACE;
    SignatureReader signatureReader = new SignatureReader(sig);
    this.visitor = new ClassSignatureVisitor(this.name, isInterface);
    signatureReader.accept(this.visitor);
  }
}
 
源代码28 项目: twill   文件: Dependencies.java
@Override
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
  addClass(name);

  if (signature != null) {
    new SignatureReader(signature).accept(signatureVisitor);
  } else {
    addClass(superName);
    addClasses(interfaces);
  }
}
 
源代码29 项目: jaxrs-analyzer   文件: JavaUtils.java
/**
 * Converts the given type signature to a human readable type string.
 * <p>
 * Example: {@code Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; -> java.util.Map<java.lang.String, java.lang.String>}
 */
public static String toReadableType(final String type) {
    final SignatureReader reader = new SignatureReader(type);
    final TraceSignatureVisitor visitor = new TraceSignatureVisitor(0);
    reader.acceptType(visitor);
    return visitor.getDeclaration();
}
 
源代码30 项目: groovy   文件: MemberSignatureParser.java
static FieldNode createFieldNode(FieldStub field, AsmReferenceResolver resolver, DecompiledClassNode owner) {
    final ClassNode[] type = {resolver.resolveType(Type.getType(field.desc))};
    if (field.signature != null) {
        new SignatureReader(field.signature).accept(new TypeSignatureParser(resolver) {
            @Override
            void finished(ClassNode result) {
                type[0] = applyErasure(result, type[0]);
            }
        });
    }
    ConstantExpression value = field.value == null ? null : new ConstantExpression(field.value);
    return new FieldNode(field.fieldName, field.accessModifiers, type[0], owner, value);
}
 
 类所在包
 同包方法