### Eclipse Workspace Patch 1.0 #P org.eclipse.core.resources Index: plugin.xml =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/plugin.xml,v retrieving revision 1.84 diff -u -r1.84 plugin.xml --- plugin.xml 18 Nov 2009 21:54:05 -0000 1.84 +++ plugin.xml 17 Dec 2009 17:37:54 -0000 @@ -211,4 +211,21 @@ + + + + + + + + + + Index: src/org/eclipse/core/internal/localstore/CopyVisitor.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/localstore/CopyVisitor.java,v retrieving revision 1.48 diff -u -r1.48 CopyVisitor.java --- src/org/eclipse/core/internal/localstore/CopyVisitor.java 2 Dec 2009 09:38:32 -0000 1.48 +++ src/org/eclipse/core/internal/localstore/CopyVisitor.java 17 Dec 2009 17:37:54 -0000 @@ -11,7 +11,6 @@ *******************************************************************************/ package org.eclipse.core.internal.localstore; -import java.util.LinkedList; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.internal.resources.*; @@ -81,14 +80,14 @@ return false; } // update filters in project descriptions - if (source.hasFilters()) { - Project sourceProject = (Project) source.getProject(); - LinkedList/**/originalDescriptions = sourceProject.internalGetDescription().getFilter(source.getProjectRelativePath()); - LinkedList/**/filterDescriptions = FilterDescription.copy(originalDescriptions, destination); - Project project = (Project) destination.getProject(); - project.internalGetDescription().setFilters(destination.getProjectRelativePath(), filterDescriptions); - project.writeDescription(updateFlags); - } +// if (source.hasFilters()) { +// Project sourceProject = (Project) source.getProject(); +// LinkedList/**/originalDescriptions = sourceProject.internalGetDescription().getFilter(source.getProjectRelativePath()); +// LinkedList/**/filterDescriptions = FilterDescription.copy(originalDescriptions, destination); +// Project project = (Project) destination.getProject(); +// project.internalGetDescription().setFilters(destination.getProjectRelativePath(), filterDescriptions); +// project.writeDescription(updateFlags); +// } IFileStore sourceStore = node.getStore(); IFileStore destinationStore = destination.getStore(); Index: src/org/eclipse/core/internal/resources/FilterTypeManager.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/FilterTypeManager.java,v retrieving revision 1.4 diff -u -r1.4 FilterTypeManager.java --- src/org/eclipse/core/internal/resources/FilterTypeManager.java 18 Nov 2009 21:54:05 -0000 1.4 +++ src/org/eclipse/core/internal/resources/FilterTypeManager.java 17 Dec 2009 17:37:54 -0000 @@ -12,8 +12,7 @@ package org.eclipse.core.internal.resources; import java.util.HashMap; -import org.eclipse.core.resources.IFilterMatcherDescriptor; -import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.resources.*; import org.eclipse.core.resources.filtermatchers.AbstractFileInfoMatcher; import org.eclipse.core.runtime.*; @@ -102,5 +101,23 @@ public void startup(IProgressMonitor monitor) { //nothing to do + +// ResourcesPlugin.getWorkspace().addResourceChangeListener(new IResourceChangeListener() { +// public void resourceChanged(IResourceChangeEvent event) { +// IMarkerDelta[] mDelta = event.getDelta().getMarkerDeltas(); +// if (mDelta.length != 0) { +// if (mDelta[0].getKind() == IResourceDelta.ADDED) { +// try { +// ((ProjectDescription) mDelta[0].getResource().getProject().getDescription()).addFilterDescription(new FilterDescription(mDelta[0].getResource(), ((Integer) mDelta[0].getAttribute("type")).intValue(), //$NON-NLS-1$ +// (FileInfoMatcherDescription) mDelta[0].getAttribute("matcherDescription"))); //$NON-NLS-1$ +// ((Project)mDelta[0].getResource().getProject()).writeDescription(IResource.NONE); +// } catch (CoreException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// } +// } +// }, IResourceChangeEvent.POST_CHANGE); } } Index: src/org/eclipse/core/internal/resources/ModelObjectWriter.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ModelObjectWriter.java,v retrieving revision 1.35 diff -u -r1.35 ModelObjectWriter.java --- src/org/eclipse/core/internal/resources/ModelObjectWriter.java 2 Dec 2009 09:38:32 -0000 1.35 +++ src/org/eclipse/core/internal/resources/ModelObjectWriter.java 17 Dec 2009 17:37:54 -0000 @@ -219,16 +219,17 @@ Collections.sort(sorted); write(LINKED_RESOURCES, sorted, writer); } - HashMap filters = description.getFilters(); - if (filters != null) { - List sorted = new ArrayList(); - for (Iterator it = filters.values().iterator(); it.hasNext();) { - List list = (List) it.next(); - sorted.addAll(list); - } - Collections.sort(sorted); - write(FILTERED_RESOURCES, sorted, writer); - } + +// HashMap filters = description.getFilters(); +// if (filters != null) { +// List sorted = new ArrayList(); +// for (Iterator it = filters.values().iterator(); it.hasNext();) { +// List list = (List) it.next(); +// sorted.addAll(list); +// } +// Collections.sort(sorted); +// write(FILTERED_RESOURCES, sorted, writer); +// } HashMap variables = description.getVariables(); if (variables != null) { List sorted = new ArrayList(variables.values()); Index: src/org/eclipse/core/internal/resources/ProjectDescription.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescription.java,v retrieving revision 1.44 diff -u -r1.44 ProjectDescription.java --- src/org/eclipse/core/internal/resources/ProjectDescription.java 5 Oct 2009 21:40:29 -0000 1.44 +++ src/org/eclipse/core/internal/resources/ProjectDescription.java 17 Dec 2009 17:37:54 -0000 @@ -181,11 +181,11 @@ * Returns the filter for the given resource name. Returns null if * no such filter exists. */ - synchronized public LinkedList/**/ getFilter(IPath aPath) { - if (filterDescriptions == null) - return null; - return (LinkedList /* */) filterDescriptions.get(aPath); - } +// synchronized public LinkedList/**/ getFilter(IPath aPath) { +// if (filterDescriptions == null) +// return null; +// return (LinkedList /* */) filterDescriptions.get(aPath); +// } /** * Returns the map of link descriptions (IPath (project relative path) -> LinkDescription). @@ -201,9 +201,9 @@ * Since this method is only used internally, it never creates a copy. * Returns null if the project does not have any filtered resources. */ - public HashMap getFilters() { - return filterDescriptions; - } +// public HashMap getFilters() { +// return filterDescriptions; +// } /** * Returns the map of variable descriptions (String (variable name) -> @@ -300,11 +300,11 @@ if (!Arrays.equals(natures, description.getNatureIds(false))) return true; - HashMap otherFilters = description.getFilters(); - if ((filterDescriptions == null) && (otherFilters != null)) - return otherFilters != null; - if ((filterDescriptions != null) && !filterDescriptions.equals(otherFilters)) - return true; +// HashMap otherFilters = description.getFilters(); +// if ((filterDescriptions == null) && (otherFilters != null)) +// return otherFilters != null; +// if ((filterDescriptions != null) && !filterDescriptions.equals(otherFilters)) +// return true; HashMap otherVariables = description.getVariables(); if ((variableDescriptions == null) && (otherVariables != null)) @@ -431,35 +431,45 @@ * Add the description of a filter. Setting to a description of null will * remove the filter from the project description. */ - synchronized public void addFilter(IPath path, FilterDescription description) { - Assert.isNotNull(description); - if (filterDescriptions == null) - filterDescriptions = new HashMap(10); - LinkedList/**/ descList = (LinkedList /* */) filterDescriptions.get(path); - if (descList == null) { - descList = new LinkedList/**/(); - filterDescriptions.put(path, descList); - } +// synchronized public void addFilter(IPath path, FilterDescription description) { +// Assert.isNotNull(description); +// if (filterDescriptions == null) +// filterDescriptions = new HashMap(10); +// LinkedList/**/ descList = (LinkedList /* */) filterDescriptions.get(path); +// if (descList == null) { +// descList = new LinkedList/**/(); +// filterDescriptions.put(path, descList); +// } +// descList.add(description); +// } + + LinkedList descList = new LinkedList(); + + public void addFilterDescription(FilterDescription description) { descList.add(description); } + public void removeFilterDescription(FilterDescription description) { + descList.remove(description); + } + /** * Add the description of a filter. Setting to a description of null will * remove the filter from the project description. */ - synchronized public void removeFilter(IPath path, FilterDescription description) { - if (filterDescriptions != null) { - LinkedList/**/ descList = (LinkedList /* */) filterDescriptions.get(path); - if (descList != null) { - descList.remove(description); - if (descList.size() == 0) { - filterDescriptions.remove(path); - if (filterDescriptions.size() == 0) - filterDescriptions = null; - } - } - } - } +// synchronized public void removeFilter(IPath path, FilterDescription description) { +// if (filterDescriptions != null) { +// LinkedList/**/ descList = (LinkedList /* */) filterDescriptions.get(path); +// if (descList != null) { +// descList.remove(description); +// if (descList.size() == 0) { +// filterDescriptions.remove(path); +// if (filterDescriptions.size() == 0) +// filterDescriptions = null; +// } +// } +// } +// } /** * Sets the description of a variable. Setting to a description of null will Index: src/org/eclipse/core/internal/resources/Resource.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Resource.java,v retrieving revision 1.178 diff -u -r1.178 Resource.java --- src/org/eclipse/core/internal/resources/Resource.java 9 Dec 2009 15:38:03 -0000 1.178 +++ src/org/eclipse/core/internal/resources/Resource.java 17 Dec 2009 17:37:55 -0000 @@ -17,12 +17,7 @@ *******************************************************************************/ package org.eclipse.core.internal.resources; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.IProgressMonitor; - -import org.eclipse.core.internal.utils.Messages; -import org.eclipse.core.internal.utils.Policy; -import org.eclipse.core.runtime.OperationCanceledException; +import org.eclipse.core.runtime.CoreException; import java.net.URI; import java.net.URISyntaxException; @@ -716,112 +711,136 @@ * @see IContainer#createFilter(int, IFileInfoMatcherDescription, int, IProgressMonitor) */ public IResourceFilterDescription createFilter(int type, IFileInfoMatcherDescription matcherDescription, int updateFlags, IProgressMonitor monitor) throws CoreException { - Assert.isNotNull(getProject()); - monitor = Policy.monitorFor(monitor); + // Assert.isNotNull(getProject()); + // monitor = Policy.monitorFor(monitor); FilterDescription filter = null; - try { - String message = NLS.bind(Messages.links_creating, getFullPath()); - monitor.beginTask(message, Policy.totalWork); - Policy.checkCanceled(monitor); - checkValidPath(path, FOLDER | PROJECT, true); - final ISchedulingRule rule = workspace.getRuleFactory().createRule(this); - try { - workspace.prepareOperation(rule, monitor); - workspace.broadcastEvent(LifecycleEvent.newEvent(LifecycleEvent.PRE_FILTER_ADD, this)); - workspace.beginOperation(true); - monitor.worked(Policy.opWork * 5 / 100); - //save the filter in the project description - filter = new FilterDescription(this, type, matcherDescription); - filter.setId(System.currentTimeMillis()); - - Project project = (Project) getProject(); - project.internalGetDescription().addFilter(getProjectRelativePath(), filter); - project.writeDescription(IResource.NONE); - monitor.worked(Policy.opWork * 5 / 100); - - //refresh to discover any new resources below this folder - if (getType() != IResource.FILE) { - //refresh either in background or foreground - if ((updateFlags & IResource.BACKGROUND_REFRESH) != 0) { - workspace.refreshManager.refresh(this); - monitor.worked(Policy.opWork * 90 / 100); - } else { - refreshLocal(DEPTH_INFINITE, Policy.subMonitorFor(monitor, Policy.opWork * 90 / 100)); - } - } else - monitor.worked(Policy.opWork * 90 / 100); - } catch (OperationCanceledException e) { - workspace.getWorkManager().operationCanceled(); - throw e; - } finally { - workspace.endOperation(rule, true, Policy.subMonitorFor(monitor, Policy.endOpWork)); - } - } finally { - monitor.done(); - } + // try { + // String message = NLS.bind(Messages.links_creating, getFullPath()); + // monitor.beginTask(message, Policy.totalWork); + // Policy.checkCanceled(monitor); + // checkValidPath(path, FOLDER | PROJECT, true); + // final ISchedulingRule rule = workspace.getRuleFactory().createRule(this); + // try { + // workspace.prepareOperation(rule, monitor); + // workspace.broadcastEvent(LifecycleEvent.newEvent(LifecycleEvent.PRE_FILTER_ADD, this)); + // workspace.beginOperation(true); + // monitor.worked(Policy.opWork * 5 / 100); + //save the filter in the project description + filter = new FilterDescription(this, type, matcherDescription); + // filter.setId(System.currentTimeMillis()); + + // Project project = (Project) getProject(); + // project.internalGetDescription().addFilter(getProjectRelativePath(), filter); + // project.writeDescription(IResource.NONE); + // monitor.worked(Policy.opWork * 5 / 100); + + IMarker filterMarker = createMarker("org.eclipse.core.resources.filtermarker"); //$NON-NLS-1$ + filterMarker.setAttribute("type", new Integer(type)); //$NON-NLS-1$ + filterMarker.setAttribute("matcherDescription", matcherDescription); //$NON-NLS-1$ + filter.setId(filterMarker.getId()); + + //refresh to discover any new resources below this folder + if (getType() != IResource.FILE) { + //refresh either in background or foreground + if ((updateFlags & IResource.BACKGROUND_REFRESH) != 0) { + workspace.refreshManager.refresh(this); +// monitor.worked(Policy.opWork * 90 / 100); + } else { + refreshLocal(DEPTH_INFINITE, null/*Policy.subMonitorFor(monitor, Policy.opWork * 90 / 100)*/); + } + } +// } else + // monitor.worked(Policy.opWork * 90 / 100); + // } catch (OperationCanceledException e) { + + // workspace.getWorkManager().operationCanceled(); + // throw e; + // } finally { + // workspace.endOperation(rule, true, Policy.subMonitorFor(monitor, Policy.endOpWork)); + // } + // } finally { + // monitor.done(); + // } return filter; } public void removeFilter(IResourceFilterDescription filterDescription, int updateFlags, IProgressMonitor monitor) throws CoreException { - monitor = Policy.monitorFor(monitor); - try { - String message = NLS.bind(Messages.links_creating, getFullPath()); - monitor.beginTask(message, Policy.totalWork); - Policy.checkCanceled(monitor); - checkValidPath(path, FOLDER | PROJECT, true); - final ISchedulingRule rule = workspace.getRuleFactory().createRule(this); - try { - workspace.prepareOperation(rule, monitor); - workspace.broadcastEvent(LifecycleEvent.newEvent(LifecycleEvent.PRE_FILTER_REMOVE, this)); - workspace.beginOperation(true); - monitor.worked(Policy.opWork * 5 / 100); - //save the filter in the project description - Project project = (Project) getProject(); - project.internalGetDescription().removeFilter(getProjectRelativePath(), (FilterDescription)filterDescription); - project.writeDescription(IResource.NONE); - monitor.worked(Policy.opWork * 5 / 100); - - //refresh to discover any new resources below this linked location - if (getType() != IResource.FILE) { - //refresh either in background or foreground - if ((updateFlags & IResource.BACKGROUND_REFRESH) != 0) { - workspace.refreshManager.refresh(this); - monitor.worked(Policy.opWork * 90 / 100); - } else { - refreshLocal(DEPTH_INFINITE, Policy.subMonitorFor(monitor, Policy.opWork * 90 / 100)); - } - } else - monitor.worked(Policy.opWork * 90 / 100); - } catch (OperationCanceledException e) { - workspace.getWorkManager().operationCanceled(); - throw e; - } finally { - workspace.endOperation(rule, true, Policy.subMonitorFor(monitor, Policy.endOpWork)); - } - } finally { - monitor.done(); - } + // monitor = Policy.monitorFor(monitor); + // try { + // String message = NLS.bind(Messages.links_creating, getFullPath()); + // monitor.beginTask(message, Policy.totalWork); + // Policy.checkCanceled(monitor); + // checkValidPath(path, FOLDER | PROJECT, true); + // final ISchedulingRule rule = workspace.getRuleFactory().createRule(this); + // try { + // workspace.prepareOperation(rule, monitor); + // workspace.broadcastEvent(LifecycleEvent.newEvent(LifecycleEvent.PRE_FILTER_REMOVE, this)); + // workspace.beginOperation(true); + // monitor.worked(Policy.opWork * 5 / 100); + // //save the filter in the project description + // Project project = (Project) getProject(); + // project.internalGetDescription().removeFilter(getProjectRelativePath(), (FilterDescription)filterDescription); + // project.writeDescription(IResource.NONE); + // monitor.worked(Policy.opWork * 5 / 100); + + IMarker filterMarker = findMarker(((FilterDescription) filterDescription).getId()); + filterMarker.delete(); + + // //refresh to discover any new resources below this linked location + if (getType() != IResource.FILE) { + //refresh either in background or foreground + if ((updateFlags & IResource.BACKGROUND_REFRESH) != 0) { + workspace.refreshManager.refresh(this); +// monitor.worked(Policy.opWork * 90 / 100); + } else { + refreshLocal(DEPTH_INFINITE, null /*Policy.subMonitorFor(monitor, Policy.opWork * 90 / 100)*/); + } + } + // } else + // monitor.worked(Policy.opWork * 90 / 100); + // } catch (OperationCanceledException e) { + // workspace.getWorkManager().operationCanceled(); + // throw e; + // } finally { + // workspace.endOperation(rule, true, Policy.subMonitorFor(monitor, Policy.endOpWork)); + // } + // } finally { + // monitor.done(); + // } } /* (non-Javadoc) * @see org.eclipse.core.resources.IContainer#getFilters() */ public IResourceFilterDescription[] getFilters() throws CoreException { - IResourceFilterDescription[] results = null; - checkValidPath(path, FOLDER | PROJECT, true); - Project project = (Project) getProject(); - ProjectDescription desc = project.internalGetDescription(); - if (desc != null) { - LinkedList/**/ list = desc.getFilter(getProjectRelativePath()); - if (list != null) { - results = new IResourceFilterDescription[list.size()]; - for (int i = 0; i < list.size(); i++) { - results[i] = (FilterDescription) list.get(i); - } - return results; - } + IMarker[] filterMarkers = findMarkers("org.eclipse.core.resources.filtermarker", false, IResource.DEPTH_ZERO); //$NON-NLS-1$ + + FilterDescription[] filterDescriptions = new FilterDescription[filterMarkers.length]; + + for (int i = 0; i < filterMarkers.length; i++) { + FilterDescription filterDescription = new FilterDescription(this, ((Integer) filterMarkers[i].getAttribute("type")).intValue(), //$NON-NLS-1$ + (FileInfoMatcherDescription) filterMarkers[i].getAttribute("matcherDescription")); //$NON-NLS-1$ + filterDescription.setId(filterMarkers[i].getId()); + filterDescriptions[i] = filterDescription; } - return new IResourceFilterDescription[0]; + + return filterDescriptions; + +// IResourceFilterDescription[] results = null; +// checkValidPath(path, FOLDER | PROJECT, true); +// Project project = (Project) getProject(); +// ProjectDescription desc = project.internalGetDescription(); +// if (desc != null) { +// LinkedList/**/ list = desc.getFilter(getProjectRelativePath()); +// if (list != null) { +// results = new IResourceFilterDescription[list.size()]; +// for (int i = 0; i < list.size(); i++) { +// results[i] = (FilterDescription) list.get(i); +// } +// return results; +// } +// } +// return new IResourceFilterDescription[0]; } /* (non-Javadoc) @@ -991,18 +1010,18 @@ } } - List filters = findFilters(); - if ((filters != null) && (filters.size() > 0)) { - // delete resource filters - Project project = (Project) getProject(); - ProjectDescription description = project.internalGetDescription(); - if (description != null) { - for (Iterator it = filters.iterator(); it.hasNext();) - description.setFilters(((IResource) it.next()).getProjectRelativePath(), null); - project.internalSetDescription(description, true); - project.writeDescription(IResource.FORCE); - } - } +// List filters = findFilters(); +// if ((filters != null) && (filters.size() > 0)) { +// // delete resource filters +// Project project = (Project) getProject(); +// ProjectDescription description = project.internalGetDescription(); +// if (description != null) { +// for (Iterator it = filters.iterator(); it.hasNext();) +// description.setFilters(((IResource) it.next()).getProjectRelativePath(), null); +// project.internalSetDescription(description, true); +// project.writeDescription(IResource.FORCE); +// } +// } // Delete properties after the resource is deleted from the tree. See bug 84584. CoreException err = null; @@ -1046,26 +1065,26 @@ * Returns a list of all filtered resources at or below this resource, or null if there * are no links. */ - private List findFilters() { - Project project = (Project) getProject(); - ProjectDescription description = project.internalGetDescription(); - List filters = null; - if (description != null) { - HashMap filterMap = description.getFilters(); - if (filterMap != null) { - IPath myPath = getProjectRelativePath(); - for (Iterator it = filterMap.keySet().iterator(); it.hasNext();) { - IPath filterPath = (IPath) it.next(); - if (myPath.isPrefixOf(filterPath)) { - if (filters == null) - filters = new ArrayList(); - filters.add(workspace.newResource(project.getFullPath().append(filterPath), IResource.FOLDER)); - } - } - } - } - return filters; - } +// private List findFilters() { +// Project project = (Project) getProject(); +// ProjectDescription description = project.internalGetDescription(); +// List filters = null; +// if (description != null) { +// HashMap filterMap = description.getFilters(); +// if (filterMap != null) { +// IPath myPath = getProjectRelativePath(); +// for (Iterator it = filterMap.keySet().iterator(); it.hasNext();) { +// IPath filterPath = (IPath) it.next(); +// if (myPath.isPrefixOf(filterPath)) { +// if (filters == null) +// filters = new ArrayList(); +// filters.add(workspace.newResource(project.getFullPath().append(filterPath), IResource.FOLDER)); +// } +// } +// } +// } +// return filters; +// } /* (non-Javadoc) * @see IResource#equals(Object) @@ -1169,15 +1188,15 @@ project.writeDescription(IResource.NONE); } - List filters = findFilters(); - if ((filters != null) && (filters.size() > 0)) { - // delete resource filters - Project project = (Project) getProject(); - ProjectDescription description = project.internalGetDescription(); - for (Iterator it = filters.iterator(); it.hasNext();) - description.setFilters(((IResource) it.next()).getProjectRelativePath(), null); - project.writeDescription(IResource.NONE); - } +// List filters = findFilters(); +// if ((filters != null) && (filters.size() > 0)) { +// // delete resource filters +// Project project = (Project) getProject(); +// ProjectDescription description = project.internalGetDescription(); +// for (Iterator it = filters.iterator(); it.hasNext();) +// description.setFilters(((IResource) it.next()).getProjectRelativePath(), null); +// project.writeDescription(IResource.NONE); +// } // check if we deleted a preferences file ProjectPreferences.deleted(this); @@ -1552,9 +1571,16 @@ ProjectDescription desc = ((Project) project).internalGetDescription(); if (desc == null) return false; - LinkedList/**/ filters = desc.getFilter(getProjectRelativePath()); - if ((filters != null) && (filters.size() > 0)) - return true; + LinkedList filters; + try { + filters = new LinkedList(Arrays.asList(getFilters())) /*desc.getFilter(getProjectRelativePath())*/; + if ((filters != null) && (filters.size() > 0)) + return true; + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return false; } @@ -2182,7 +2208,13 @@ LinkedList/**/currentExcludeFilters = new LinkedList/**/(); LinkedList/**/filters = null; if (project.internalGetDescription() != null) { - filters = project.internalGetDescription().getFilter(relativePath); + try { + filters = new LinkedList(Arrays.asList(getFilters())); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if (filters != null) { Iterator/*FilterDescription*/it = filters.iterator(); while (it.hasNext()) { @@ -2204,7 +2236,12 @@ // verify inherited filters while (relativePath.segmentCount() > 0) { relativePath = relativePath.removeLastSegments(1); - filters = project.internalGetDescription().getFilter(relativePath); + try { + filters = new LinkedList(Arrays.asList(getFilters())); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } if (filters != null) { Iterator/*FilterDescription*/it = filters.iterator(); while (it.hasNext()) { Index: src/org/eclipse/core/internal/resources/ResourceTree.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ResourceTree.java,v retrieving revision 1.78 diff -u -r1.78 ResourceTree.java --- src/org/eclipse/core/internal/resources/ResourceTree.java 5 Oct 2009 21:39:46 -0000 1.78 +++ src/org/eclipse/core/internal/resources/ResourceTree.java 17 Dec 2009 17:37:55 -0000 @@ -695,7 +695,7 @@ //moving linked resources may have modified the description in memory ((ProjectDescription) destDescription).setLinkDescriptions(destination.internalGetDescription().getLinks()); // moving filters may have modified the description in memory - ((ProjectDescription) destDescription).setFilterDescriptions(destination.internalGetDescription().getFilters()); +// ((ProjectDescription) destDescription).setFilterDescriptions(destination.internalGetDescription().getFilters()); // moving variables may have modified the description in memory ((ProjectDescription) destDescription).setVariableDescriptions(destination.internalGetDescription().getVariables()); destination.internalSetDescription(destDescription, true); Index: src/org/eclipse/core/internal/resources/Workspace.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Workspace.java,v retrieving revision 1.225 diff -u -r1.225 Workspace.java --- src/org/eclipse/core/internal/resources/Workspace.java 2 Dec 2009 09:38:32 -0000 1.225 +++ src/org/eclipse/core/internal/resources/Workspace.java 17 Dec 2009 17:37:56 -0000 @@ -776,20 +776,20 @@ } // update filters in project descriptions - if (source.hasFilters() && source.getProject().exists()) { - Project sourceProject = (Project) source.getProject(); - LinkedList/**/ originalDescriptions = sourceProject.internalGetDescription().getFilter(source.getProjectRelativePath()); - LinkedList/**/ filterDescriptions = FilterDescription.copy(originalDescriptions, destinationResource); - if (moveResources && !movingProject) { - if (((Project) source.getProject()) - .internalGetDescription() - .setFilters(source.getProjectRelativePath(), null)) - ((Project) source.getProject()).writeDescription(updateFlags); - } - Project project = (Project) destinationResource.getProject(); - project.internalGetDescription().setFilters(destinationResource.getProjectRelativePath(), filterDescriptions); - project.writeDescription(updateFlags); - } +// if (source.hasFilters() && source.getProject().exists()) { +// Project sourceProject = (Project) source.getProject(); +// LinkedList/**/ originalDescriptions = sourceProject.internalGetDescription().getFilter(source.getProjectRelativePath()); +// LinkedList/**/ filterDescriptions = FilterDescription.copy(originalDescriptions, destinationResource); +// if (moveResources && !movingProject) { +// if (((Project) source.getProject()) +// .internalGetDescription() +// .setFilters(source.getProjectRelativePath(), null)) +// ((Project) source.getProject()).writeDescription(updateFlags); +// } +// Project project = (Project) destinationResource.getProject(); +// project.internalGetDescription().setFilters(destinationResource.getProjectRelativePath(), filterDescriptions); +// project.writeDescription(updateFlags); +// } // do the recursion. if we have a file then it has no members so return. otherwise // recursively call this method on the container's members if the depth tells us to