static String getLocalTypeRefBySimpleName(CtType<?> templateType, String typeSimpleName) { CtType<?> type = templateType.getNestedType(typeSimpleName); if (type != null) { return type.getQualifiedName(); } type = templateType.getPackage().getType(typeSimpleName); if (type != null) { return type.getQualifiedName(); } Set<String> typeQNames = new HashSet<>(); templateType .filterChildren((CtTypeReference<?> ref) -> typeSimpleName.equals(ref.getSimpleName())) .forEach((CtTypeReference<?> ref) -> typeQNames.add(ref.getQualifiedName())); if (typeQNames.size() > 1) { throw new SpoonException("The type parameter " + typeSimpleName + " is ambiguous. It matches multiple types: " + typeQNames); } if (typeQNames.size() == 1) { return typeQNames.iterator().next(); } return null; }
if (clazz.getEnclosingClass() != null) { ctEnclosingClass = scan(clazz.getEnclosingClass()); return ctEnclosingClass.getNestedType(clazz.getSimpleName()); } else { if (clazz.getPackage() == null) {
}); } else { return t.getNestedType(className);
/** * Gets a created type from its qualified name. * * @return a found type or null if does not exist */ @SuppressWarnings("unchecked") public <T> CtType<T> get(String qualifiedName) { int inertTypeIndex = qualifiedName.lastIndexOf(CtType.INNERTTYPE_SEPARATOR); if (inertTypeIndex > 0) { String s = qualifiedName.substring(0, inertTypeIndex); CtType<T> t = get(s); if (t == null) { return null; } return t.getNestedType(qualifiedName.substring(inertTypeIndex + 1)); } int packageIndex = qualifiedName.lastIndexOf(CtPackage.PACKAGE_SEPARATOR); CtPackage pack; if (packageIndex > 0) { pack = factory.Package().get(qualifiedName.substring(0, packageIndex)); } else { pack = factory.Package().get(CtPackage.TOP_LEVEL_PACKAGE_NAME); } if (pack == null) { return null; } return (CtType<T>) pack.getType(qualifiedName.substring(packageIndex + 1)); }