/** * Search for magic variables using the @property tag * * @param types * @param variableName * @param cache */ private void resolveMagicClassVariableDeclaration( IType[] types, String variableName, IModelAccessCache cache) { for (IType type : types) { resolveMagicClassVariableDeclaration(variableName, type, cache); try { if (evaluated.isEmpty() && type.getSuperClasses() != null && type.getSuperClasses().length > 0) { ITypeHierarchy hierarchy = null; if (cache != null) { hierarchy = cache.getSuperTypeHierarchy(type, null); } IType[] superClasses = PHPModelUtils.getSuperClasses(type, hierarchy); for (int i = 0; i < superClasses.length /* && evaluated.isEmpty() */; i++) { IType superClass = superClasses[i]; resolveMagicClassVariableDeclaration(variableName, superClass, cache); } } } catch (ModelException e) { e.printStackTrace(); } } }
private void collectSuperClasses(IScriptProject project, String typeName, Set superClassSet) { Set typeSet = new HashSet(); searchTypeDeclarations(project, typeName, typeSet); if (typeSet.isEmpty() != true) { IType itype; String[] superClasses; for (Iterator typeIter = typeSet.iterator(); typeIter.hasNext(); ) { itype = (IType) typeIter.next(); if (itype.exists()) { try { superClasses = itype.getSuperClasses(); if (superClasses != null) { for (int cnt = 0, max = superClasses.length; cnt < max; cnt++) { if (!superClassSet.contains(superClasses[cnt])) { superClassSet.add(superClasses[cnt]); collectSuperClasses(project, superClasses[cnt], superClassSet); } } } } catch (ModelException mxcn) { mxcn.printStackTrace(); } } } } }