/** * @param rootClassName starting class * @param constant constant name * @return class name that defines given constant or null */ public String getConstantClass(String rootClassName, String constant) { ClassInfo info = classes.get(rootClassName); if (info == null) { return null; } if (info.constants.contains(constant)) { return rootClassName; } for (String interfaceName : info.implementsInterfaces) { String definingClass = getConstantClass(interfaceName, constant); if (definingClass != null) { return definingClass; } } for (String className : info.extendsClasses) { String definingClass = getConstantClass(className, constant); if (definingClass != null) { return definingClass; } } for (String traitName : info.usesTraits) { String definingClass = getConstantClass(traitName, constant); if (definingClass != null) { return definingClass; } } return null; }
@Override public DefKey resolve(DefKey source) { Def def = resolutions.get(source.getPath()); if (def != null) { return def.defKey; } return null; }