List of usage examples for org.eclipse.jdt.core IJavaElement PACKAGE_FRAGMENT
int PACKAGE_FRAGMENT
To view the source code for org.eclipse.jdt.core IJavaElement PACKAGE_FRAGMENT.
Click Source Link
From source file:ch.qos.logback.beagle.util.EditorUtil.java
License:Open Source License
private static IType findType(IPackageFragmentRoot root, String fullyQualifiedName) throws JavaModelException { IJavaElement[] children = root.getChildren(); for (int i = 0; i < children.length; i++) { IJavaElement element = children[i]; if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { IPackageFragment pack = (IPackageFragment) element; if (!fullyQualifiedName.startsWith(pack.getElementName())) continue; IType type = findType(pack, fullyQualifiedName); if (type != null && type.exists()) return type; }/* w w w .j av a 2 s . co m*/ } return null; }
From source file:com.android.ide.eclipse.adt.internal.editors.manifest.model.UiPackageAttributeNode.java
License:Open Source License
/** * Displays and handles a "Create Package Wizard". * * This is invoked by doLabelClick() when clicking on the hyperlink label with an * empty package text field.// w ww .jav a 2 s . co m */ private void createNewPackage() { OpenNewPackageWizardAction action = new OpenNewPackageWizardAction(); IProject project = getProject(); action.setSelection(new StructuredSelection(project)); action.run(); IJavaElement element = action.getCreatedElement(); if (element != null && element.exists() && element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { setPackageTextField((IPackageFragment) element); } }
From source file:com.android.ide.eclipse.adt.internal.launch.junit.AndroidJUnitLaunchConfigDelegate.java
License:Open Source License
/** * Returns the test package stored in the launch configuration, or <code>null</code> if not * specified.//from www. ja v a 2 s . co m * * @param configuration the {@link ILaunchConfiguration} to retrieve the test package info from * @return the test package or <code>null</code>. */ private String getTestPackage(ILaunchConfiguration configuration) { // try to retrieve a package name from the JUnit container attribute String containerHandle = getStringLaunchAttribute(JUnitLaunchConfigurationConstants.ATTR_TEST_CONTAINER, configuration); if (containerHandle != null && containerHandle.length() > 0) { IJavaElement element = JavaCore.create(containerHandle); // containerHandle could be a IProject, check if its a java package if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { return element.getElementName(); } } return null; }
From source file:com.android.ide.eclipse.adt.internal.launch.junit.AndroidJUnitPropertyTester.java
License:Open Source License
private boolean canLaunchAsJUnitTest(IJavaElement element) { try {/*from w w w .j a v a 2 s. co m*/ switch (element.getElementType()) { case IJavaElement.JAVA_PROJECT: return true; // can run, let JDT detect if there are tests case IJavaElement.PACKAGE_FRAGMENT_ROOT: return false; // not supported by Android test runner case IJavaElement.PACKAGE_FRAGMENT: return ((IPackageFragment) element).hasChildren(); case IJavaElement.COMPILATION_UNIT: case IJavaElement.CLASS_FILE: case IJavaElement.TYPE: case IJavaElement.METHOD: return isJUnitTest(element); default: return false; } } catch (JavaModelException e) { return false; } }
From source file:com.android.ide.eclipse.adt.internal.refactoring.core.FixImportsJob.java
License:Open Source License
@Override public IStatus runInWorkspace(final IProgressMonitor monitor) throws CoreException { if (mJavaPackage == null || mAndroidManifest == null || !mAndroidManifest.exists()) { return Status.CANCEL_STATUS; }/* w ww. j a v a2 s . com*/ IProject project = mAndroidManifest.getProject(); IJavaProject javaProject = JavaCore.create(project); if (javaProject == null || !javaProject.isOpen()) { return Status.CANCEL_STATUS; } project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor); IMarker[] markers = project.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE); for (int i = 0; i < markers.length; i++) { IMarker marker = markers[i]; IResource resource = marker.getResource(); try { IJavaElement element = JavaCore.create(resource); if (element != null && (element instanceof ICompilationUnit)) { final ICompilationUnit cu = (ICompilationUnit) element; IPackageFragment packageFragment = (IPackageFragment) cu .getAncestor(IJavaElement.PACKAGE_FRAGMENT); if (packageFragment != null && packageFragment.exists()) { String packageName = packageFragment.getElementName(); if (packageName != null && packageName.startsWith(mJavaPackage)) { CompilationUnit astRoot = SharedASTProvider.getAST(cu, SharedASTProvider.WAIT_ACTIVE_ONLY, null); CodeGenerationSettings settings = JavaPreferencesSettings .getCodeGenerationSettings(cu.getJavaProject()); final boolean hasAmbiguity[] = new boolean[] { false }; IChooseImportQuery query = new IChooseImportQuery() { public TypeNameMatch[] chooseImports(TypeNameMatch[][] openChoices, ISourceRange[] ranges) { hasAmbiguity[0] = true; return new TypeNameMatch[0]; } }; final OrganizeImportsOperation op = new OrganizeImportsOperation(cu, astRoot, settings.importIgnoreLowercase, !cu.isWorkingCopy(), true, query); Display.getDefault().asyncExec(new Runnable() { public void run() { try { IProgressService progressService = PlatformUI.getWorkbench() .getProgressService(); progressService.run(true, true, new WorkbenchRunnableAdapter(op, op.getScheduleRule())); IEditorPart openEditor = EditorUtility.isOpenInEditor(cu); if (openEditor != null) { openEditor.doSave(monitor); } } catch (Throwable e) { RefactoringUtil.log(e); } } }); } } } } catch (Throwable e) { RefactoringUtil.log(e); } } return Status.OK_STATUS; }
From source file:com.android.ide.eclipse.adt.internal.refactorings.core.FixImportsJob.java
License:Open Source License
@Override public IStatus runInWorkspace(final IProgressMonitor monitor) throws CoreException { if (mJavaPackage == null || mAndroidManifest == null || !mAndroidManifest.exists()) { return Status.CANCEL_STATUS; }// w ww .j av a 2s . c om IProject project = mAndroidManifest.getProject(); IJavaProject javaProject = JavaCore.create(project); if (javaProject == null || !javaProject.isOpen()) { return Status.CANCEL_STATUS; } project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, monitor); IMarker[] markers = project.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE); for (int i = 0; i < markers.length; i++) { IMarker marker = markers[i]; IResource resource = marker.getResource(); try { IJavaElement element = JavaCore.create(resource); if (element != null && (element instanceof ICompilationUnit)) { final ICompilationUnit cu = (ICompilationUnit) element; IPackageFragment packageFragment = (IPackageFragment) cu .getAncestor(IJavaElement.PACKAGE_FRAGMENT); if (packageFragment != null && packageFragment.exists()) { String packageName = packageFragment.getElementName(); if (packageName != null && packageName.startsWith(mJavaPackage)) { CompilationUnit astRoot = SharedASTProvider.getAST(cu, SharedASTProvider.WAIT_ACTIVE_ONLY, null); CodeGenerationSettings settings = JavaPreferencesSettings .getCodeGenerationSettings(cu.getJavaProject()); final boolean hasAmbiguity[] = new boolean[] { false }; IChooseImportQuery query = new IChooseImportQuery() { @Override public TypeNameMatch[] chooseImports(TypeNameMatch[][] openChoices, ISourceRange[] ranges) { hasAmbiguity[0] = true; return new TypeNameMatch[0]; } }; final OrganizeImportsOperation op = new OrganizeImportsOperation(cu, astRoot, settings.importIgnoreLowercase, !cu.isWorkingCopy(), true, query); Display.getDefault().asyncExec(new Runnable() { @Override public void run() { try { IProgressService progressService = PlatformUI.getWorkbench() .getProgressService(); progressService.run(true, true, new WorkbenchRunnableAdapter(op, op.getScheduleRule())); IEditorPart openEditor = EditorUtility.isOpenInEditor(cu); if (openEditor != null) { openEditor.doSave(monitor); } } catch (Throwable e) { RefactoringUtil.log(e); } } }); } } } } catch (Throwable e) { RefactoringUtil.log(e); } } return Status.OK_STATUS; }
From source file:com.codenvy.ide.ext.java.server.core.search.SearchPattern.java
License:Open Source License
/** * Returns a search pattern based on a given Java element. * The pattern is used to trigger the appropriate search, and can be parameterized as follows: * * @param element the Java element the search pattern is based on * @param limitTo determines the nature of the expected matches * <ul>//www .j ava 2s.co m * <li>{@link IJavaSearchConstants#DECLARATIONS DECLARATIONS}: will search declarations matching * with the corresponding element. In case the element is a method, declarations of matching * methods in sub-types will also be found, allowing to find declarations of abstract methods, etc. * Some additional flags may be specified while searching declaration: * <ul> * <li>{@link IJavaSearchConstants#IGNORE_DECLARING_TYPE IGNORE_DECLARING_TYPE}: declaring type will be ignored * during the search.<br> * For example using following test case: * <pre> * class A { A method() { return null; } } * class B extends A { B method() { return null; } } * class C { A method() { return null; } } * </pre> * search for <code>method</code> declaration with this flag * will return 2 matches: in A and in C * </li> * <li>{@link IJavaSearchConstants#IGNORE_RETURN_TYPE IGNORE_RETURN_TYPE}: return type will be ignored * during the search.<br> * Using same example, search for <code>method</code> declaration with this flag * will return 2 matches: in A and in B. * </li> * </ul> * Note that these two flags may be combined and both declaring and return types can be ignored * during the search. Then, using same example, search for <code>method</code> declaration * with these 2 flags will return 3 matches: in A, in B and in C * </li> * <li>{@link IJavaSearchConstants#REFERENCES REFERENCES}: will search references to the given element.</li> * <li>{@link IJavaSearchConstants#ALL_OCCURRENCES ALL_OCCURRENCES}: will search for either declarations or * references as specified above. * </li> * <li>All other fine grain constants defined in the <b>limitTo</b> category * of the {@link IJavaSearchConstants} are also accepted nature: * <table border=0> * <tr> * <th align=left>Fine grain constant * <th align=left>Meaning * <tr> * <td>{@link IJavaSearchConstants#FIELD_DECLARATION_TYPE_REFERENCE FIELD_DECLARATION_TYPE_REFERENCE} * <td>Return only type references used as the type of a field declaration. * <tr> * <td>{@link IJavaSearchConstants#LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE} * <td>Return only type references used as the type of a local variable declaration. * <tr> * <td>{@link IJavaSearchConstants#PARAMETER_DECLARATION_TYPE_REFERENCE PARAMETER_DECLARATION_TYPE_REFERENCE} * <td>Return only type references used as the type of a method parameter declaration. * <tr> * <td>{@link IJavaSearchConstants#SUPERTYPE_TYPE_REFERENCE SUPERTYPE_TYPE_REFERENCE} * <td>Return only type references used as a super type or as a super interface. * <tr> * <td>{@link IJavaSearchConstants#THROWS_CLAUSE_TYPE_REFERENCE THROWS_CLAUSE_TYPE_REFERENCE} * <td>Return only type references used in a throws clause. * <tr> * <td>{@link IJavaSearchConstants#CAST_TYPE_REFERENCE CAST_TYPE_REFERENCE} * <td>Return only type references used in a cast expression. * <tr> * <td>{@link IJavaSearchConstants#CATCH_TYPE_REFERENCE CATCH_TYPE_REFERENCE} * <td>Return only type references used in a catch header. * <tr> * <td>{@link IJavaSearchConstants#CLASS_INSTANCE_CREATION_TYPE_REFERENCE CLASS_INSTANCE_CREATION_TYPE_REFERENCE} * <td>Return only type references used in class instance creation. * <tr> * <td>{@link IJavaSearchConstants#RETURN_TYPE_REFERENCE RETURN_TYPE_REFERENCE} * <td>Return only type references used as a method return type. * <tr> * <td>{@link IJavaSearchConstants#IMPORT_DECLARATION_TYPE_REFERENCE IMPORT_DECLARATION_TYPE_REFERENCE} * <td>Return only type references used in an import declaration. * <tr> * <td>{@link IJavaSearchConstants#ANNOTATION_TYPE_REFERENCE ANNOTATION_TYPE_REFERENCE} * <td>Return only type references used as an annotation. * <tr> * <td>{@link IJavaSearchConstants#TYPE_ARGUMENT_TYPE_REFERENCE TYPE_ARGUMENT_TYPE_REFERENCE} * <td>Return only type references used as a type argument in a parameterized type or a parameterized method. * <tr> * <td>{@link IJavaSearchConstants#TYPE_VARIABLE_BOUND_TYPE_REFERENCE TYPE_VARIABLE_BOUND_TYPE_REFERENCE} * <td>Return only type references used as a type variable bound. * <tr> * <td>{@link IJavaSearchConstants#WILDCARD_BOUND_TYPE_REFERENCE WILDCARD_BOUND_TYPE_REFERENCE} * <td>Return only type references used as a wildcard bound. * <tr> * <td>{@link IJavaSearchConstants#INSTANCEOF_TYPE_REFERENCE INSTANCEOF_TYPE_REFERENCE} * <td>Return only type references used as a type of an <code>instanceof</code> expression. * <tr> * <td>{@link IJavaSearchConstants#SUPER_REFERENCE SUPER_REFERENCE} * <td>Return only super field accesses or super method invocations (e.g. using the <code>super</code> qualifier). * <tr> * <td>{@link IJavaSearchConstants#QUALIFIED_REFERENCE QUALIFIED_REFERENCE} * <td>Return only qualified field accesses or qualified method invocations. * <tr> * <td>{@link IJavaSearchConstants#THIS_REFERENCE THIS_REFERENCE} * <td>Return only primary field accesses or primary method invocations (e.g. using the <code>this</code> qualifier). * <tr> * <td>{@link IJavaSearchConstants#IMPLICIT_THIS_REFERENCE IMPLICIT_THIS_REFERENCE} * <td>Return only field accesses or method invocations without any qualification. * </table> * </li> * </ul> * @param matchRule one of the following match rules: * <ul> * <li>{@link #R_EXACT_MATCH}</li> * <li>{@link #R_PREFIX_MATCH}</li> * <li>{@link #R_PATTERN_MATCH}</li> * <li>{@link #R_CAMELCASE_MATCH}</li> * <li>{@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}</li> * </ul> * , which may be also combined with one of the following flags: * <ul> * <li>{@link #R_CASE_SENSITIVE}</li> * <li>{@link #R_ERASURE_MATCH}</li> * <li>{@link #R_EQUIVALENT_MATCH}</li> * </ul> * For example, * <ul> * <li>{@link #R_EXACT_MATCH} | {@link #R_CASE_SENSITIVE}: if an exact * and case sensitive match is requested,</li> * <li>{@link #R_PREFIX_MATCH} if a case insensitive prefix match is requested</li> * <li>{@link #R_EXACT_MATCH} | {@link #R_ERASURE_MATCH}: if a case * insensitive and erasure match is requested.</li> * </ul> * Note that {@link #R_ERASURE_MATCH} or {@link #R_EQUIVALENT_MATCH} has no effect * on non-generic types/methods search. * <p> * Note also that default behavior for generic types/methods search is to find exact matches. * @return a search pattern for a Java element or <code>null</code> if the given element is ill-formed * @since 3.1 */ public static SearchPattern createPattern(IJavaElement element, int limitTo, int matchRule) { SearchPattern searchPattern = null; int lastDot; boolean ignoreDeclaringType = false; boolean ignoreReturnType = false; int maskedLimitTo = limitTo & ~(IJavaSearchConstants.IGNORE_DECLARING_TYPE + IJavaSearchConstants.IGNORE_RETURN_TYPE); if (maskedLimitTo == IJavaSearchConstants.DECLARATIONS || maskedLimitTo == IJavaSearchConstants.ALL_OCCURRENCES) { ignoreDeclaringType = (limitTo & IJavaSearchConstants.IGNORE_DECLARING_TYPE) != 0; ignoreReturnType = (limitTo & IJavaSearchConstants.IGNORE_RETURN_TYPE) != 0; } if ((matchRule = validateMatchRule(null, matchRule)) == -1) { return null; } char[] declaringSimpleName = null; char[] declaringQualification = null; switch (element.getElementType()) { case IJavaElement.FIELD: IField field = (IField) element; if (!ignoreDeclaringType) { IType declaringClass = field.getDeclaringType(); declaringSimpleName = declaringClass.getElementName().toCharArray(); declaringQualification = declaringClass.getPackageFragment().getElementName().toCharArray(); char[][] enclosingNames = enclosingTypeNames(declaringClass); if (enclosingNames.length > 0) { declaringQualification = CharOperation.concat(declaringQualification, CharOperation.concatWith(enclosingNames, '.'), '.'); } } char[] name = field.getElementName().toCharArray(); char[] typeSimpleName = null; char[] typeQualification = null; String typeSignature = null; if (!ignoreReturnType) { try { typeSignature = field.getTypeSignature(); char[] signature = typeSignature.toCharArray(); char[] typeErasure = Signature.toCharArray(Signature.getTypeErasure(signature)); CharOperation.replace(typeErasure, '$', '.'); if ((lastDot = CharOperation.lastIndexOf('.', typeErasure)) == -1) { typeSimpleName = typeErasure; } else { typeSimpleName = CharOperation.subarray(typeErasure, lastDot + 1, typeErasure.length); typeQualification = CharOperation.subarray(typeErasure, 0, lastDot); if (!field.isBinary()) { // prefix with a '*' as the full qualification could be bigger (because of an import) typeQualification = CharOperation.concat(IIndexConstants.ONE_STAR, typeQualification); } } } catch (JavaModelException e) { return null; } } // Create field pattern searchPattern = new FieldPattern(name, declaringQualification, declaringSimpleName, typeQualification, typeSimpleName, typeSignature, limitTo, matchRule); break; case IJavaElement.IMPORT_DECLARATION: String elementName = element.getElementName(); lastDot = elementName.lastIndexOf('.'); if (lastDot == -1) return null; // invalid import declaration IImportDeclaration importDecl = (IImportDeclaration) element; if (importDecl.isOnDemand()) { searchPattern = createPackagePattern(elementName.substring(0, lastDot), maskedLimitTo, matchRule); } else { searchPattern = createTypePattern(elementName.substring(lastDot + 1).toCharArray(), elementName.substring(0, lastDot).toCharArray(), null, null, null, maskedLimitTo, matchRule); } break; case IJavaElement.LOCAL_VARIABLE: LocalVariable localVar = (LocalVariable) element; searchPattern = new LocalVariablePattern(localVar, limitTo, matchRule); break; case IJavaElement.TYPE_PARAMETER: ITypeParameter typeParam = (ITypeParameter) element; boolean findParamDeclarations = true; boolean findParamReferences = true; switch (maskedLimitTo) { case IJavaSearchConstants.DECLARATIONS: findParamReferences = false; break; case IJavaSearchConstants.REFERENCES: findParamDeclarations = false; break; } searchPattern = new TypeParameterPattern(findParamDeclarations, findParamReferences, typeParam, matchRule); break; case IJavaElement.METHOD: IMethod method = (IMethod) element; boolean isConstructor; try { isConstructor = method.isConstructor(); } catch (JavaModelException e) { return null; } IType declaringClass = method.getDeclaringType(); if (ignoreDeclaringType) { if (isConstructor) declaringSimpleName = declaringClass.getElementName().toCharArray(); } else { declaringSimpleName = declaringClass.getElementName().toCharArray(); declaringQualification = declaringClass.getPackageFragment().getElementName().toCharArray(); char[][] enclosingNames = enclosingTypeNames(declaringClass); if (enclosingNames.length > 0) { declaringQualification = CharOperation.concat(declaringQualification, CharOperation.concatWith(enclosingNames, '.'), '.'); } } char[] selector = method.getElementName().toCharArray(); char[] returnSimpleName = null; char[] returnQualification = null; String returnSignature = null; if (!ignoreReturnType) { try { returnSignature = method.getReturnType(); char[] signature = returnSignature.toCharArray(); char[] returnErasure = Signature.toCharArray(Signature.getTypeErasure(signature)); CharOperation.replace(returnErasure, '$', '.'); if ((lastDot = CharOperation.lastIndexOf('.', returnErasure)) == -1) { returnSimpleName = returnErasure; } else { returnSimpleName = CharOperation.subarray(returnErasure, lastDot + 1, returnErasure.length); returnQualification = CharOperation.subarray(returnErasure, 0, lastDot); if (!method.isBinary()) { // prefix with a '*' as the full qualification could be bigger (because of an import) CharOperation.concat(IIndexConstants.ONE_STAR, returnQualification); } } } catch (JavaModelException e) { return null; } } String[] parameterTypes = method.getParameterTypes(); int paramCount = parameterTypes.length; char[][] parameterSimpleNames = new char[paramCount][]; char[][] parameterQualifications = new char[paramCount][]; String[] parameterSignatures = new String[paramCount]; for (int i = 0; i < paramCount; i++) { parameterSignatures[i] = parameterTypes[i]; char[] signature = parameterSignatures[i].toCharArray(); char[] paramErasure = Signature.toCharArray(Signature.getTypeErasure(signature)); CharOperation.replace(paramErasure, '$', '.'); if ((lastDot = CharOperation.lastIndexOf('.', paramErasure)) == -1) { parameterSimpleNames[i] = paramErasure; parameterQualifications[i] = null; } else { parameterSimpleNames[i] = CharOperation.subarray(paramErasure, lastDot + 1, paramErasure.length); parameterQualifications[i] = CharOperation.subarray(paramErasure, 0, lastDot); if (!method.isBinary()) { // prefix with a '*' as the full qualification could be bigger (because of an import) CharOperation.concat(IIndexConstants.ONE_STAR, parameterQualifications[i]); } } } // Create method/constructor pattern if (isConstructor) { searchPattern = new ConstructorPattern(declaringSimpleName, declaringQualification, parameterQualifications, parameterSimpleNames, parameterSignatures, method, limitTo, matchRule); } else { searchPattern = new MethodPattern(selector, declaringQualification, declaringSimpleName, returnQualification, returnSimpleName, returnSignature, parameterQualifications, parameterSimpleNames, parameterSignatures, method, limitTo, matchRule); } break; case IJavaElement.TYPE: IType type = (IType) element; searchPattern = createTypePattern(type.getElementName().toCharArray(), type.getPackageFragment().getElementName().toCharArray(), ignoreDeclaringType ? null : enclosingTypeNames(type), null, type, maskedLimitTo, matchRule); break; case IJavaElement.PACKAGE_DECLARATION: case IJavaElement.PACKAGE_FRAGMENT: searchPattern = createPackagePattern(element.getElementName(), maskedLimitTo, matchRule); break; } if (searchPattern != null) MatchLocator.setFocus(searchPattern, element); return searchPattern; }
From source file:com.codenvy.ide.ext.java.server.internal.core.BinaryType.java
License:Open Source License
public IPackageFragment getPackageFragment() { IJavaElement parentElement = this.parent; while (parentElement != null) { if (parentElement.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { return (IPackageFragment) parentElement; } else {/*from w ww.java 2 s. com*/ parentElement = parentElement.getParent(); } } Assert.isTrue(false); // should not happen return null; }
From source file:com.codenvy.ide.ext.java.server.internal.core.ClassFileInfo.java
License:Open Source License
/** * Creates the handles for the inner types of the given binary type. * Adds new handles to the given vector. *///from ww w . j a va 2 s. c o m private void generateInnerClassHandles(IType type, IBinaryType typeInfo, ArrayList childrenHandles) { // Add inner types // If the current type is an inner type, innerClasses returns // an extra entry for the current type. This entry must be removed. // Can also return an entry for the enclosing type of an inner type. IBinaryNestedType[] innerTypes = typeInfo.getMemberTypes(); if (innerTypes != null) { IPackageFragment pkg = (IPackageFragment) type.getAncestor(IJavaElement.PACKAGE_FRAGMENT); for (int i = 0, typeCount = innerTypes.length; i < typeCount; i++) { IBinaryNestedType binaryType = innerTypes[i]; IClassFile parentClassFile = pkg.getClassFile( new String(ClassFile.unqualifiedName(binaryType.getName())) + SUFFIX_STRING_class); IType innerType = new BinaryType((JavaElement) parentClassFile, ((JavaElement) parentClassFile).manager, ClassFile.simpleName(binaryType.getName())); childrenHandles.add(innerType); } } }
From source file:com.codenvy.ide.ext.java.server.internal.core.DeltaProcessor.java
License:Open Source License
private Openable createElement(File resource, int elementType, RootInfo rootInfo) { if (resource == null) return null; IPath path = new Path(resource.getPath()); IJavaElement element = null;//from w w w . j ava2s . c o m switch (elementType) { // // case IJavaElement.JAVA_PROJECT: // // // note that non-java resources rooted at the project level will also enter this code with // // an elementType JAVA_PROJECT (see #elementType(...)). // if (resource instanceof IProject){ // // popUntilPrefixOf(path); // // if (this.currentElement != null // && this.currentElement.getElementType() == IJavaElement.JAVA_PROJECT // && ((IJavaProject)this.currentElement).getProject().equals(resource)) { // return this.currentElement; // } // if (rootInfo != null && rootInfo.project.getProject().equals(resource)){ // element = rootInfo.project; // break; // } // IProject proj = (IProject)resource; // if (JavaProject.hasJavaNature(proj)) { // element = JavaCore.create(proj); // } else { // // java project may have been been closed or removed (look for // // element amongst old java project s list). // element = this.state.findJavaProject(proj.getName()); // } // } // break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: element = rootInfo == null ? JavaModelManager.create(resource, manager.getJavaProject()) : rootInfo.getPackageFragmentRoot(resource); break; case IJavaElement.PACKAGE_FRAGMENT: if (rootInfo != null) { if (rootInfo.project.contains(resource)) { PackageFragmentRoot root = (PackageFragmentRoot) rootInfo.getPackageFragmentRoot(null); // create package handle IPath pkgPath = path.removeFirstSegments(root.resource().toPath().getNameCount()); String[] pkgName = pkgPath.segments(); element = root.getPackageFragment(pkgName); } } else { // find the element that encloses the resource popUntilPrefixOf(path); if (this.currentElement == null) { element = JavaCore.create(resource); } else { // find the root PackageFragmentRoot root = this.currentElement.getPackageFragmentRoot(); if (root == null) { element = JavaCore.create(resource); } else if (((JavaProject) root.getJavaProject()).contains(resource)) { // create package handle IPath pkgPath = path.removeFirstSegments(root.getPath().segmentCount()); String[] pkgName = pkgPath.segments(); element = root.getPackageFragment(pkgName); } } } break; case IJavaElement.COMPILATION_UNIT: case IJavaElement.CLASS_FILE: // find the element that encloses the resource popUntilPrefixOf(path); if (this.currentElement == null) { element = rootInfo == null ? JavaModelManager.create(resource, manager.getJavaProject()) : JavaModelManager.create(resource, rootInfo.project); } else { // find the package IPackageFragment pkgFragment = null; switch (this.currentElement.getElementType()) { case IJavaElement.PACKAGE_FRAGMENT_ROOT: PackageFragmentRoot root = (PackageFragmentRoot) this.currentElement; IPath rootPath = root.getPath(); IPath pkgPath = path.removeLastSegments(1); String[] pkgName = pkgPath.removeFirstSegments(rootPath.segmentCount()).segments(); pkgFragment = root.getPackageFragment(pkgName); break; case IJavaElement.PACKAGE_FRAGMENT: Openable pkg = this.currentElement; if (pkg.getPath().equals(path.removeLastSegments(1))) { pkgFragment = (IPackageFragment) pkg; } // else case of package x which is a prefix of x.y break; case IJavaElement.COMPILATION_UNIT: case IJavaElement.CLASS_FILE: pkgFragment = (IPackageFragment) this.currentElement.getParent(); break; } if (pkgFragment == null) { element = rootInfo == null ? JavaCore.create(resource) : JavaModelManager.create(resource, rootInfo.project); } else { if (elementType == IJavaElement.COMPILATION_UNIT) { // create compilation unit handle // fileName validation has been done in elementType(IResourceDelta, int, boolean) String fileName = path.lastSegment(); element = pkgFragment.getCompilationUnit(fileName); } else { // create class file handle // fileName validation has been done in elementType(IResourceDelta, int, boolean) String fileName = path.lastSegment(); element = pkgFragment.getClassFile(fileName); } } } break; } if (element == null) return null; this.currentElement = (Openable) element; return this.currentElement; }