package com.googlecode.totallylazy.reflection;
import sun.reflect.generics.factory.CoreReflectionFactory;
import sun.reflect.generics.factory.GenericsFactory;
import sun.reflect.generics.parser.SignatureParser;
import sun.reflect.generics.scope.ClassScope;
import sun.reflect.generics.tree.TypeSignature;
import sun.reflect.generics.visitor.Reifier;
public class Signature {
public static java.lang.reflect.Type parse(String signature) {
return parse(signature, Signature.class);
}
public static java.lang.reflect.Type parse(String signature, Class<?> scope) {
Reifier reifier = reifier(scope);
TypeSignature typeSignature = SignatureParser.make().parseTypeSig(signature);
typeSignature.accept(reifier);
return reifier.getResult();
}
public static Reifier reifier(Class<?> scope) {
return Reifier.make(genericsFactory(scope));
}
public static GenericsFactory genericsFactory(Class<?> scope) {
return CoreReflectionFactory.make(scope, ClassScope.make(scope));
}
}