private Object[] getChildren(IType type) throws JavaScriptModelException { IParent parent; if (type.isBinary()) parent = type.getClassFile(); else { parent = type.getJavaScriptUnit(); } if (type.getDeclaringType() != null) return type.getChildren(); // Add import declarations IJavaScriptElement[] members = parent.getChildren(); ArrayList tempResult = new ArrayList(members.length); for (int i = 0; i < members.length; i++) if ((members[i] instanceof IImportContainer)) tempResult.add(members[i]); tempResult.addAll(Arrays.asList(type.getChildren())); return tempResult.toArray(); }
private Object[] getPackageContents(IPackageFragment fragment) throws JavaScriptModelException { ISourceReference[] sourceRefs; if (fragment.getKind() == IPackageFragmentRoot.K_SOURCE) { sourceRefs = fragment.getJavaScriptUnits(); } else { IClassFile[] classFiles = fragment.getClassFiles(); List topLevelClassFile = new ArrayList(); for (int i = 0; i < classFiles.length; i++) { IType type = classFiles[i].getType(); if (type != null && type.getDeclaringType() == null && !type.isAnonymous() && !type.isLocal()) topLevelClassFile.add(classFiles[i]); } sourceRefs = (ISourceReference[]) topLevelClassFile.toArray(new ISourceReference[topLevelClassFile.size()]); } Object[] result = new Object[0]; for (int i = 0; i < sourceRefs.length; i++) result = concatenate(result, removeImportAndPackageDeclarations(getChildren(sourceRefs[i]))); return concatenate(result, fragment.getNonJavaScriptResources()); }