当前位置: 首页>>代码示例>>Java>>正文


Java SignatureAttribute类代码示例

本文整理汇总了Java中javassist.bytecode.SignatureAttribute的典型用法代码示例。如果您正苦于以下问题:Java SignatureAttribute类的具体用法?Java SignatureAttribute怎么用?Java SignatureAttribute使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


SignatureAttribute类属于javassist.bytecode包,在下文中一共展示了SignatureAttribute类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: replaceGenericResponseMethods

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
private void replaceGenericResponseMethods(CtClass clazz)
    throws NotFoundException, CannotCompileException, BadBytecode {
  for (CtMethod method : clazz.getMethods()) {
    if (method.getReturnType().subtypeOf(getGenericResponseClass())) {
      MethodInfo methodInfo = method.getMethodInfo();
      CtMethod replacementMethod = CtNewMethod
          .abstractMethod(
              getResponseClass(), method.getName(), method.getParameterTypes(),
              method.getExceptionTypes(), clazz);

      for (Object attributeInfo : methodInfo.getAttributes()) {
        if (attributeInfo instanceof SignatureAttribute) {
          String sig = transformMethodSignature((SignatureAttribute) attributeInfo);
          replacementMethod.getMethodInfo().addAttribute(
              new SignatureAttribute(((SignatureAttribute) attributeInfo).getConstPool(), sig));
        } else {
          replacementMethod.getMethodInfo().addAttribute((AttributeInfo) attributeInfo);
        }
      }
      clazz.removeMethod(method);
      clazz.addMethod(replacementMethod);
    }
  }
}
 
开发者ID:cerner,项目名称:beadledom,代码行数:25,代码来源:GenericResponseResourceTransformer.java

示例2: transformMethodSignature

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
private String transformMethodSignature(SignatureAttribute signatureAttribute)
    throws BadBytecode {
  String originalSig = signatureAttribute.getSignature();
  SignatureAttribute.MethodSignature methodSignature =
      SignatureAttribute.toMethodSignature(originalSig);

  SignatureAttribute.ClassType returnType =
      new SignatureAttribute.ClassType("javax.ws.rs.core.Response");
  SignatureAttribute.MethodSignature replacementSignature =
      new SignatureAttribute.MethodSignature(
          methodSignature.getTypeParameters(),
          methodSignature.getParameterTypes(),
          returnType,
          methodSignature.getExceptionTypes());
  return replacementSignature.encode();
}
 
开发者ID:cerner,项目名称:beadledom,代码行数:17,代码来源:GenericResponseResourceTransformer.java

示例3: signatureTypeToType

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
static Type signatureTypeToType(SignatureAttribute.Type signatureType, TypeSolver typeSolver, TypeParametrizable typeParametrizable) {
    if (signatureType instanceof SignatureAttribute.ClassType) {
        SignatureAttribute.ClassType classType = (SignatureAttribute.ClassType) signatureType;
        List<Type> typeParameters = classType.getTypeArguments() == null ? Collections.emptyList() : Arrays.stream(classType.getTypeArguments()).map(ta -> typeArgumentToType(ta, typeSolver, typeParametrizable)).collect(Collectors.toList());
        final String typeName =
                classType.getDeclaringClass() != null ?
                        classType.getDeclaringClass().getName() + "." + classType.getName() :
                        classType.getName();
        ReferenceTypeDeclaration typeDeclaration = typeSolver.solveType(
                internalNameToCanonicalName(typeName));
        return new ReferenceTypeImpl(typeDeclaration, typeParameters, typeSolver);
    } else if (signatureType instanceof SignatureAttribute.TypeVariable) {
        SignatureAttribute.TypeVariable typeVariableSignature = (SignatureAttribute.TypeVariable)signatureType;
        Optional<TypeParameterDeclaration> typeParameterDeclarationOpt = typeParametrizable.findTypeParameter(typeVariableSignature.getName());
        if (!typeParameterDeclarationOpt.isPresent()) {
            throw new UnsolvedSymbolException("Unable to solve TypeVariable " + typeVariableSignature);
        }
        TypeParameterDeclaration typeParameterDeclaration = typeParameterDeclarationOpt.get();
        return new TypeVariable(typeParameterDeclaration);
    } else {
        throw new RuntimeException(signatureType.getClass().getCanonicalName());
    }
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:24,代码来源:JavassistUtils.java

示例4: getParam

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
@Override
public ParameterDeclaration getParam(int i) {
    try {
        boolean variadic = false;
        if ((ctMethod.getModifiers() & javassist.Modifier.VARARGS) > 0) {
            variadic = i == (ctMethod.getParameterTypes().length - 1);
        }
        if (ctMethod.getGenericSignature() != null) {
            SignatureAttribute.MethodSignature methodSignature = SignatureAttribute.toMethodSignature(ctMethod.getGenericSignature());
            SignatureAttribute.Type signatureType = methodSignature.getParameterTypes()[i];
            return new JavassistParameterDeclaration(JavassistUtils.signatureTypeToType(signatureType, typeSolver, this), typeSolver, variadic);
        } else {
            return new JavassistParameterDeclaration(ctMethod.getParameterTypes()[i], typeSolver, variadic);
        }
    } catch (NotFoundException e) {
        throw new RuntimeException(e);
    } catch (BadBytecode badBytecode) {
        throw new RuntimeException(badBytecode);
    }
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:21,代码来源:JavassistMethodDeclaration.java

示例5: getParam

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
@Override
public ParameterDeclaration getParam(int i) {
    try {
        boolean variadic = false;
        if ((ctConstructor.getModifiers() & javassist.Modifier.VARARGS) > 0) {
            variadic = i == (ctConstructor.getParameterTypes().length - 1);
        }
        if (ctConstructor.getGenericSignature() != null) {
            SignatureAttribute.MethodSignature methodSignature = SignatureAttribute.toMethodSignature(ctConstructor.getGenericSignature());
            SignatureAttribute.Type signatureType = methodSignature.getParameterTypes()[i];
            return new JavassistParameterDeclaration(JavassistUtils.signatureTypeToType(signatureType, typeSolver, this), typeSolver, variadic);
        } else {
            return new JavassistParameterDeclaration(ctConstructor.getParameterTypes()[i], typeSolver, variadic);
        }
    } catch (NotFoundException e) {
        throw new RuntimeException(e);
    } catch (BadBytecode badBytecode) {
        throw new RuntimeException(badBytecode);
    }
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:21,代码来源:JavassistConstructorDeclaration.java

示例6: getParam

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
@Override
public ResolvedParameterDeclaration getParam(int i) {
    try {
        boolean variadic = false;
        if ((ctMethod.getModifiers() & javassist.Modifier.VARARGS) > 0) {
            variadic = i == (ctMethod.getParameterTypes().length - 1);
        }
        if (ctMethod.getGenericSignature() != null) {
            SignatureAttribute.MethodSignature methodSignature = SignatureAttribute.toMethodSignature(ctMethod.getGenericSignature());
            SignatureAttribute.Type signatureType = methodSignature.getParameterTypes()[i];
            return new JavassistParameterDeclaration(JavassistUtils.signatureTypeToType(signatureType, typeSolver, this), typeSolver, variadic);
        } else {
            return new JavassistParameterDeclaration(ctMethod.getParameterTypes()[i], typeSolver, variadic);
        }
    } catch (NotFoundException e) {
        throw new RuntimeException(e);
    } catch (BadBytecode badBytecode) {
        throw new RuntimeException(badBytecode);
    }
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:21,代码来源:JavassistMethodDeclaration.java

示例7: getParam

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
@Override
public ResolvedParameterDeclaration getParam(int i) {
    try {
        boolean variadic = false;
        if ((ctConstructor.getModifiers() & javassist.Modifier.VARARGS) > 0) {
            variadic = i == (ctConstructor.getParameterTypes().length - 1);
        }
        if (ctConstructor.getGenericSignature() != null) {
            SignatureAttribute.MethodSignature methodSignature = SignatureAttribute.toMethodSignature(ctConstructor.getGenericSignature());
            SignatureAttribute.Type signatureType = methodSignature.getParameterTypes()[i];
            return new JavassistParameterDeclaration(JavassistUtils.signatureTypeToType(signatureType, typeSolver, this), typeSolver, variadic);
        } else {
            return new JavassistParameterDeclaration(ctConstructor.getParameterTypes()[i], typeSolver, variadic);
        }
    } catch (NotFoundException e) {
        throw new RuntimeException(e);
    } catch (BadBytecode badBytecode) {
        throw new RuntimeException(badBytecode);
    }
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:21,代码来源:JavassistConstructorDeclaration.java

示例8: renameAttributes

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
@SuppressWarnings("unchecked")
private static void renameAttributes(List<AttributeInfo> attributes, ReplacerClassMap map, SignatureType type) {
	try {
		
		// make the rename class method accessible
		Method renameClassMethod = AttributeInfo.class.getDeclaredMethod("renameClass", Map.class);
		renameClassMethod.setAccessible(true);
		
		for (AttributeInfo attribute : attributes) {
			if (attribute instanceof SignatureAttribute) {
				// this has to be handled specially because SignatureAttribute.renameClass() is buggy as hell
				SignatureAttribute signatureAttribute = (SignatureAttribute)attribute;
				String newSignature = type.rename(signatureAttribute.getSignature(), map);
				if (newSignature != null) {
					signatureAttribute.setSignature(newSignature);
				}
			} else if (attribute instanceof CodeAttribute) {
				// code attributes have signature attributes too (indirectly)
				CodeAttribute codeAttribute = (CodeAttribute)attribute;
				renameAttributes(codeAttribute.getAttributes(), map, type);
			} else if (attribute instanceof LocalVariableTypeAttribute) {
				// lvt attributes have signature attributes too
				LocalVariableTypeAttribute localVariableAttribute = (LocalVariableTypeAttribute)attribute;
				renameLocalVariableTypeAttribute(localVariableAttribute, map);
			} else {
				renameClassMethod.invoke(attribute, map);
			}
		}
		
	} catch(NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
		throw new Error("Unable to call javassist methods by reflection!", ex);
	}
}
 
开发者ID:cccssw,项目名称:enigma-vk,代码行数:34,代码来源:ClassRenamer.java

示例9: renameClassSignature

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
private static String renameClassSignature(String signature, ReplacerClassMap map) {
	try {
		ClassSignature type = renameType(SignatureAttribute.toClassSignature(signature), map);
		if (type != null) {
			return type.encode();
		}
		return null;
	} catch (BadBytecode ex) {
		throw new Error("Can't parse field signature: " + signature);
	}
}
 
开发者ID:cccssw,项目名称:enigma-vk,代码行数:12,代码来源:ClassRenamer.java

示例10: renameFieldSignature

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
private static String renameFieldSignature(String signature, ReplacerClassMap map) {
	try {
		ObjectType type = renameType(SignatureAttribute.toFieldSignature(signature), map);
		if (type != null) {
			return type.encode();
		}
		return null;
	} catch (BadBytecode ex) {
		throw new Error("Can't parse class signature: " + signature);
	}
}
 
开发者ID:cccssw,项目名称:enigma-vk,代码行数:12,代码来源:ClassRenamer.java

示例11: renameMethodSignature

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
private static String renameMethodSignature(String signature, ReplacerClassMap map) {
	try {
		MethodSignature type = renameType(SignatureAttribute.toMethodSignature(signature), map);
		if (type != null) {
			return type.encode();
		}
		return null;
	} catch (BadBytecode ex) {
		throw new Error("Can't parse method signature: " + signature);
	}
}
 
开发者ID:cccssw,项目名称:enigma-vk,代码行数:12,代码来源:ClassRenamer.java

示例12: getBounds

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
@Override
public List<TypeParameterDeclaration.Bound> getBounds(TypeSolver typeSolver) {
    List<Bound> bounds = new ArrayList<>();
    if (wrapped.getClassBound() != null && !wrapped.getClassBound().toString().equals(Object.class.getCanonicalName())) {
        throw new UnsupportedOperationException(wrapped.getClassBound().toString());
    }
    for (SignatureAttribute.ObjectType ot : wrapped.getInterfaceBound()) {
        throw new UnsupportedOperationException(ot.toString());
    }
    return bounds;
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:12,代码来源:JavassistTypeParameter.java

示例13: objectTypeArgumentToType

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
private static Type objectTypeArgumentToType(SignatureAttribute.ObjectType typeArgument, TypeSolver typeSolver, TypeParametrizable typeParametrizable) {
    String typeName = typeArgument.jvmTypeName();
    Optional<Type> type = getGenericParameterByName(typeName, typeParametrizable);
    return type.orElseGet(() -> new ReferenceTypeImpl(
        typeSolver.solveType(internalNameToCanonicalName(typeName)),
        typeSolver));
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:8,代码来源:JavassistUtils.java

示例14: typeArgumentToType

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
private static Type typeArgumentToType(SignatureAttribute.TypeArgument typeArgument, TypeSolver typeSolver, TypeParametrizable typeParametrizable) {
    if (typeArgument.isWildcard()) {
        if (typeArgument.getType() == null) {
            return Wildcard.UNBOUNDED;
        } else if (typeArgument.getKind() == '+') {
            return Wildcard.extendsBound(objectTypeArgumentToType(typeArgument.getType(), typeSolver, typeParametrizable));
        } else if (typeArgument.getKind() == '-') {
            return Wildcard.superBound(objectTypeArgumentToType(typeArgument.getType(), typeSolver, typeParametrizable));
        } else {
            throw new UnsupportedOperationException();
        }
    } else {
        return objectTypeArgumentToType(typeArgument.getType(), typeSolver, typeParametrizable);
    }
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:16,代码来源:JavassistUtils.java

示例15: getTypeParameters

import javassist.bytecode.SignatureAttribute; //导入依赖的package包/类
@Override
public List<TypeParameterDeclaration> getTypeParameters() {
    try {
        if (ctMethod.getGenericSignature() == null) {
            return Collections.emptyList();
        }
        SignatureAttribute.MethodSignature methodSignature = SignatureAttribute.toMethodSignature(ctMethod.getGenericSignature());
        return Arrays.stream(methodSignature.getTypeParameters()).map((jasTp) -> new JavassistTypeParameter(jasTp, this, typeSolver)).collect(Collectors.toList());
    } catch (BadBytecode badBytecode) {
        throw new RuntimeException(badBytecode);
    }
}
 
开发者ID:javaparser,项目名称:javasymbolsolver,代码行数:13,代码来源:JavassistMethodDeclaration.java


注:本文中的javassist.bytecode.SignatureAttribute类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。