private static String inferGenericTypeName(CtClass ctClass, SignatureAttribute.Type genericSignature) { // infer targetEntity from generic type signature if ( isAssignable( ctClass, Collection.class.getName() ) ) { return ( (SignatureAttribute.ClassType) genericSignature ).getTypeArguments()[0].getType().jvmTypeName(); } if ( isAssignable( ctClass, Map.class.getName() ) ) { return ( (SignatureAttribute.ClassType) genericSignature ).getTypeArguments()[1].getType().jvmTypeName(); } return ctClass.getName(); }
private static String inferGenericTypeName(CtClass ctClass, SignatureAttribute.Type genericSignature) { // infer targetEntity from generic type signature if ( isAssignable( ctClass, Collection.class.getName() ) ) { return ( (SignatureAttribute.ClassType) genericSignature ).getTypeArguments()[0].getType().jvmTypeName(); } if ( isAssignable( ctClass, Map.class.getName() ) ) { return ( (SignatureAttribute.ClassType) genericSignature ).getTypeArguments()[1].getType().jvmTypeName(); } return ctClass.getName(); }
private static ResolvedType objectTypeArgumentToType(SignatureAttribute.ObjectType typeArgument, TypeSolver typeSolver, ResolvedTypeParametrizable typeParametrizable) { String typeName = typeArgument.jvmTypeName(); Optional<ResolvedType> type = getGenericParameterByName(typeName, typeParametrizable); return type.orElseGet(() -> new ReferenceTypeImpl( typeSolver.solveType(removeTypeArguments(internalNameToCanonicalName(typeName))), typeSolver)); }
private static ResolvedType objectTypeArgumentToType(SignatureAttribute.ObjectType typeArgument, TypeSolver typeSolver, ResolvedTypeParametrizable typeParametrizable) { String typeName = typeArgument.jvmTypeName(); Optional<ResolvedType> type = getGenericParameterByName(typeName, typeParametrizable); return type.orElseGet(() -> new ReferenceTypeImpl( typeSolver.solveType(removeTypeArguments(internalNameToCanonicalName(typeName))), typeSolver)); }
private static ResolvedType objectTypeArgumentToType(SignatureAttribute.ObjectType typeArgument, TypeSolver typeSolver, ResolvedTypeParametrizable typeParametrizable) { if(typeArgument instanceof SignatureAttribute.ArrayType){ return signatureTypeToType(((SignatureAttribute.ArrayType) typeArgument).getComponentType(), typeSolver, typeParametrizable); } else { String typeName = typeArgument.jvmTypeName(); return getGenericParameterByName(typeName, typeParametrizable, typeSolver); } }