protected boolean allowsSimpleName(String qualifiedName, String simpleName) { return getThisTypeQualifiedNames().contains(qualifiedName) || ((!thisCollidesWithJavaLang || !getThisTypeSimpleNames().contains(simpleName)) && JAVA_LANG_PACK.matcher(qualifiedName).matches()) || equal(qualifiedName, simpleName); }
protected boolean needsQualifiedName(String qualifiedName, String simpleName) { return !organizeImports || (getThisTypeSimpleNames().contains(simpleName) && !getThisTypeQualifiedNames().contains(qualifiedName)) || CodeGenUtil2.isJavaLangType(simpleName); }
public void appendType(final Class<?> type, StringBuilder builder) { if (type.isPrimitive()) { builder.append(type.getSimpleName()); } else if (type.isArray()) { appendType(type.getComponentType(), builder); builder.append("[]"); } else { final String qualifiedName = type.getCanonicalName(); String nameToImport = qualifiedName; String shortName = type.getSimpleName(); String outerShortName = shortName; if (shouldUseQualifiedNestedName(qualifiedName)) { Class<?> outerContainer = type; while (outerContainer.getDeclaringClass() != null) { outerContainer = outerContainer.getDeclaringClass(); } if (type != outerContainer) { outerShortName = outerContainer.getSimpleName(); if(!getThisTypeQualifiedNames().contains(outerContainer.getCanonicalName()) && getThisTypeSimpleNames().contains(outerShortName)) { outerShortName = qualifiedName; shortName = qualifiedName; } else { nameToImport = outerContainer.getCanonicalName(); shortName = outerShortName + qualifiedName.substring(nameToImport.length()); } } } appendType(qualifiedName, shortName, outerShortName, nameToImport, builder); } }
public ImportManager(boolean organizeImports, JvmDeclaredType thisType, char innerTypeSeparator) { this.organizeImports = organizeImports; this.innerTypeSeparator = innerTypeSeparator; if (thisType != null) { getThisTypeSimpleNames().add(thisType.getSimpleName()); getThisTypeQualifiedNames().add(thisType.getQualifiedName(innerTypeSeparator)); thisCollidesWithJavaLang |= CodeGenUtil2.isJavaLangType(thisType.getSimpleName()); registerSimpleNamesOfInnerClasses(thisType, new LinkedHashSet<JvmType>()); } }
protected void registerSimpleNamesOfInnerClasses(JvmDeclaredType thisType, LinkedHashSet<JvmType> handled) { if (!handled.add(thisType)) return; List<JvmDeclaredType> nested = EcoreUtil2.typeSelect(thisType.getMembers(), JvmDeclaredType.class); for (JvmDeclaredType jvmDeclaredType : nested) { getThisTypeSimpleNames().add(jvmDeclaredType.getSimpleName()); getThisTypeQualifiedNames().add(jvmDeclaredType.getQualifiedName(getInnerTypeSeparator())); thisCollidesWithJavaLang |= CodeGenUtil2.isJavaLangType(jvmDeclaredType.getSimpleName()); } for (JvmTypeReference superType: thisType.getSuperTypes()) { if (superType.getType() instanceof JvmDeclaredType) { registerSimpleNamesOfInnerClasses((JvmDeclaredType) superType.getType(), handled); } } }
public void appendType(final JvmType type, StringBuilder builder) { if (type instanceof JvmPrimitiveType || type instanceof JvmVoid || type instanceof JvmTypeParameter) { builder.append(type.getQualifiedName(getInnerTypeSeparator())); } else if (type instanceof JvmArrayType) { appendType(((JvmArrayType) type).getComponentType(), builder); builder.append("[]"); } else { final String qualifiedName = type.getQualifiedName(getInnerTypeSeparator()); String nameToImport = qualifiedName; String shortName = type.getSimpleName(); String outerShortName = shortName; if (shouldUseQualifiedNestedName(qualifiedName)) { JvmType outerContainer = type; while (outerContainer.eContainer() instanceof JvmType) { outerContainer = (JvmType) outerContainer.eContainer(); } if (type != outerContainer) { outerShortName = outerContainer.getSimpleName(); if(!getThisTypeQualifiedNames().contains(outerContainer.getQualifiedName(getInnerTypeSeparator())) && getThisTypeSimpleNames().contains(outerShortName)) { outerShortName = qualifiedName; shortName = qualifiedName; } else { nameToImport = outerContainer.getQualifiedName(getInnerTypeSeparator()); shortName = outerShortName + qualifiedName.substring(nameToImport.length()); } } } appendType(qualifiedName, shortName, outerShortName, nameToImport, builder); } }