Bug 28115

Summary: Ubiquitous resource in the JavaModel
Product: [Eclipse Project] JDT Reporter: Philipe Mulet <philippe_mulet>
Component: CoreAssignee: Jerome Lanneluc <jerome_lanneluc>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: 2.1   
Target Milestone: 2.1 M4   
Hardware: PC   
OS: Windows 2000   
Whiteboard:

Description Philipe Mulet CLA 2002-12-11 11:59:43 EST
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.
Comment 1 Jerome Lanneluc CLA 2002-12-12 07:21:21 EST
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.
Comment 2 Philipe Mulet CLA 2002-12-12 08:44:32 EST
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/").
Comment 3 Philipe Mulet CLA 2002-12-12 08:50:57 EST
When using "service/" instead, it works ok.
Comment 4 Philipe Mulet CLA 2002-12-12 08:51:31 EST
Should verify whether "service" should implicitly be treated as "service/" by 
the Ant fileset rules.
Comment 5 Philipe Mulet CLA 2002-12-12 08:58:02 EST
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).
Comment 6 Philipe Mulet CLA 2002-12-12 09:09:30 EST
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)
Comment 7 Jerome Lanneluc CLA 2002-12-12 13:10:20 EST
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)
Comment 8 David Audel CLA 2002-12-18 04:36:46 EST
Verified.