public boolean updateSuperClassName(JavaClassSource javaClassSource, String superClassName, ClassTypeResolver classTypeResolver) throws Exception { String oldSuperClassName = javaClassSource.getSuperType() != null ? resolveTypeName(classTypeResolver, javaClassSource.getSuperType()) : null; if (!StringUtils.equals(oldSuperClassName, superClassName)) { //TODO remove the extra "import packageName.SuperClassName" added by Roaster when a class name is set as superclass. javaClassSource.setSuperType(superClassName); return true; } return false; }
/** * Recursive lookup for properties from superclass in order to support inheritance */ private void inspectClassProperties(final String type, Map<String, Property> properties) { JavaSource<?> clazz = sourceForName(this.project, type); if (clazz instanceof MethodHolder<?>) { lookupGetters(properties, (MethodHolder<?>) clazz); lookupSetters(properties, (MethodHolder<?>) clazz); if (clazz instanceof JavaClass) { JavaClassSource source = Roaster.parse(JavaClassSource.class, clazz.toString()); if (!source.getSuperType().equals("java.lang.Object")) { inspectClassProperties(source.getSuperType(), properties); } } } }
/** * Recursive lookup for properties from superclass in order to support inheritance */ private void inspectClassProperties(final String type, Map<String, Property> properties) { JavaSource<?> clazz = sourceForName(this.project, type); if (clazz instanceof MethodHolder<?>) { lookupGetters(properties, (MethodHolder<?>) clazz); lookupSetters(properties, (MethodHolder<?>) clazz); if (clazz instanceof JavaClass) { JavaClassSource source = Roaster.parse(JavaClassSource.class, clazz.toString()); if (!source.getSuperType().equals("java.lang.Object")) { inspectClassProperties(source.getSuperType(), properties); } } } }
if (!clazz.getSuperType().equals("java.lang.Object"))
if (!clazz.getSuperType().equals("java.lang.Object"))
private List<ResolvedProperty> getProperties(JavaClassSource nestedType) { final List<ResolvedProperty> properties = new ArrayList<>(); final Set<String> names = new HashSet<>(); do { for (PropertySource<JavaClassSource> propertySource : nestedType.getProperties()) { // NOTE: fields with no setters are skipped if (propertySource.isMutable() && !names.contains(propertySource.getName())) { properties.add(new ResolvedProperty(getSimpleJavaType(resolveParamType(nestedType, propertySource.getType().getName())), propertySource)); names.add(propertySource.getName()); } } nestedType = readJavaType(nestedType.getSuperType()); } while (nestedType != null); return properties; }
if (!clazz.getSuperType().equals("java.lang.Object"))
if (!clazz.getSuperType().equals("java.lang.Object"))
if (!clazz.getSuperType().equals("java.lang.Object"))
public void visit(JavaClassSource javaClassSource) { if (javaClassSource.getSuperType() != null) { try { String superClass = classTypeResolver.getFullTypeName(javaClassSource.getSuperType()); addJavaResourceReference(superClass); logger.error("Unable to index superclass name for class: " + javaClassSource.getQualifiedName() + ", superclass: " + javaClassSource.getSuperType(), e);
if (javaClassSource.getSuperType() != null) { superClass = resolveTypeName(classTypeResolver, javaClassSource.getSuperType()); dataObject.setSuperClassName(superClass);