Bug 30681 Refresh problem in Package Explorer view
20030129 integration build Refreshing a project without a Java nature in a Package Explorer produces message:" Problem occured refreshing the selected resources. Reason: org.eclipse.releng does not exist." Log contains: !ENTRY org.eclipse.jdt.ui 4 10001 Jan 30, 2003 23:45:54.937 !MESSAGE Internal Error !STACK 1 Java Model Exception: Java Model Status [org.eclipse.releng does not exist.] at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException (JavaElement.java:488) at org.eclipse.jdt.internal.core.JavaModelManager.getPerProjectInfoCheckExistence (JavaModelManager.java:948) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1335) at org.eclipse.jdt.internal.core.DeltaProcessor.checkExternalArchiveChanges (DeltaProcessor.java(Compiled Code)) at org.eclipse.jdt.internal.core.DeltaProcessor.checkExternalArchiveChanges (DeltaProcessor.java(Compiled Code)) at org.eclipse.jdt.internal.core.JavaModel.refreshExternalArchives (JavaModel.java:445) at org.eclipse.jdt.ui.actions.RefreshAction$1.run (RefreshAction.java:120) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation (BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:337) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:665) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1580) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:2607) at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run (WorkbenchRunnableAdapter.java:32) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run (ModalContext.java:95) !ENTRY org.eclipse.jdt.core 4 969 Jan 30, 2003 23:45:54.997 !MESSAGE org.eclipse.releng does not exist.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java
}
	
	private IResource[] getResources(IStructuredSelection selection) {
		if (selection.isEmpty()) {
			return new IResource[] {ResourcesPlugin.getWorkspace().getRoot()};
		}
		
		List result= new ArrayList(selection.size());
		for (Iterator iter= selection.iterator(); iter.hasNext();) {
			Object element= (Object) iter.next();
			if (element instanceof IAdaptable) {
				IResource resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
				if (resource != null)
					result.add(resource);
			}			
		}
		
		for (Iterator iter= result.iterator(); iter.hasNext();) {
			IResource resource= (IResource) iter.next();
			if (isDescendent(result, resource))
				iter.remove();			
		}
		
		return (IResource[]) result.toArray(new IResource[result.size()]);
	}
	
	private boolean isDescendent(List candidates, IResource element) {
		IResource parent= element.getParent();
		while (parent != null) {
			if (candidates.contains(parent))