Community
Participate
Working Groups
Build 20021210 Same setup as bug 28114. Observe that the folder 'src/service' is shown both as a non-java resource and a nested source folder. I would expect only seeing it as a source folder.
Changed PackageFragmentRootInfo.computeFolderNonJavaResources() to not included excluded folders that correspond to another package fragment root. Changed DeltaProcessor to not traverse the delta in the context of the outer root, but in the context of the inner root.
Still doesn't work perfectly. P +- src | +- client / Sub.java +- src/service Add subfolder 'service' under 'src/service' It ends up being a non-java rsc under 'src' pkg fragment root !?! Note: the exclusion pattern for src folder 'src' is "service" (not "service/").
When using "service/" instead, it works ok.
Should verify whether "service" should implicitly be treated as "service/" by the Ant fileset rules.
Also, if excluding "service" (no trailing /), when closing/reopening the IProject, everything is fine again (src/service/service is properly rooted as an empty pkg under pkg root src/service).
Extra issue using "service" exclusion filter: - create subfolder src/service/service (check it gets added under src/service) - move src/service/Super.java into subfolder, notice that src/service/serice is no longer a ghost package - move Super.java back to src/service - src/service/service is now ghosted again - try to delete the subfolder src/service/service - the subfolder icon becomes a red square - selecting it: !ENTRY org.eclipse.jdt.ui 4 10001 Dec 12, 2002 15:25:38.992 !MESSAGE Internal Error !STACK 1 Java Model Exception: Java Model Status [service [in src/service [in Crap]] does not exist.] at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException (JavaElement.java:488) at org.eclipse.jdt.internal.core.PackageFragment.openWhenClosed (PackageFragment.java:313) at org.eclipse.jdt.internal.core.JavaElement.openHierarchy (JavaElement.java:509) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo (JavaElement.java:296) at org.eclipse.jdt.internal.core.JavaElement.getChildren (JavaElement.java:252) at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType (JavaElement.java:261) at org.eclipse.jdt.internal.core.PackageFragment.getCompilationUnits (PackageFragment.java:190) at org.eclipse.jdt.ui.actions.OrganizeImportsAction.isEnabled (OrganizeImportsAction.java:213) at org.eclipse.jdt.ui.actions.OrganizeImportsAction.selectionChanged (OrganizeImportsAction.java:148) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchSelectionChanged (SelectionDispatchAction.java:181) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.selectionChanged (SelectionDispatchAction.java:176) at org.eclipse.jface.viewers.Viewer.fireSelectionChanged (Viewer.java:148) at org.eclipse.jface.viewers.StructuredViewer.updateSelection (StructuredViewer.java:1151) at org.eclipse.jface.viewers.StructuredViewer.handleSelect (StructuredViewer.java:540) at org.eclipse.jface.viewers.StructuredViewer$1.widgetSelected (StructuredViewer.java:564) at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent (OpenStrategy.java:172) at org.eclipse.jface.util.OpenStrategy.access$3(OpenStrategy.java:167) at org.eclipse.jface.util.OpenStrategy$1.handleEvent (OpenStrategy.java:302) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:825) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1692) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1410) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1403) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1386) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:845) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:462) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:247) at org.eclipse.core.launcher.Main.run(Main.java:703) at org.eclipse.core.launcher.Main.main(Main.java:539)
Ant treats 'service' differently than 'service/'. For example, when copying a directory, it wil still copy the contents of 'service' in the first case, but not on the second case. Changed JavaConvention.validateClasspath to reject a source entry if its exclusion filter doesn't exclude the nested entry AND its children (i.e. if it doesn't have a training slash)
Verified.