[nobug]: Updating ModuleCore API. Committed for MDE.
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/ModuleCore.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/ModuleCore.java
index 294c17a..941bd20 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/ModuleCore.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/ModuleCore.java
@@ -70,7 +70,6 @@
public class ModuleCore implements IEditModelHandler {
public static final Class ADAPTER_TYPE = ModuleCore.class;
- public static final int DELETE_METAMODEL_ONLY = 0x100000;
static final String DEPLOYABLES_ROOT = ".deployables/"; //$NON-NLS-1$
static String MODULE_META_FILE_NAME = ".wtpmodules"; //$NON-NLS-1$
@@ -103,7 +102,8 @@
* @return A ModuleCore edit facade to access the WTP Modules Model
*/
public static ModuleCore getModuleCoreForRead(IProject aProject) {
- return new ModuleCore(ModuleCoreNature.getModuleCoreNature(aProject), true);
+ ModuleCoreNature nature = ModuleCoreNature.getModuleCoreNature(aProject);
+ return nature != null ? new ModuleCore(nature, true) : null;
}
/**
@@ -122,7 +122,8 @@
* @return A ModuleCore edit facade to access the WTP Modules Model
*/
public static ModuleCore getModuleCoreForWrite(IProject aProject) {
- return new ModuleCore(ModuleCoreNature.getModuleCoreNature(aProject), false);
+ ModuleCoreNature nature = ModuleCoreNature.getModuleCoreNature(aProject);
+ return nature != null ? new ModuleCore(nature, false) : null;
}
/**
@@ -150,8 +151,8 @@
/**
* <p>
- * For {@see WorkbenchComponent}s that are contained within a project, the containing project can
- * be determined with the {@see WorkbenchComponent}'s fully-qualified module URI.
+ * For {@see WorkbenchComponent}s that are contained within a project, the containing project
+ * can be determined with the {@see WorkbenchComponent}'s fully-qualified module URI.
* </p>
* <p>
* The following method will return the the corresponding project for the supplied module URI,
@@ -184,12 +185,11 @@
/**
* <p>
* Returns the corresponding Eclipse IResource, if it can be determined, for the given
- * {@see ComponentResource}. The {@see ComponentResource#getSourcePath()}
- * must return a valid resource path for This method to return a valid value. The returned
- * value may be either an {@see org.eclipse.core.resources.IFile} or
- * {@see org.eclipse.core.resources.IFolder}. A client may use the return value of
- * {@see IResource#getType()} to determine what type of resource was returned. (@see
- * IResource#FILE} or {@see IResource#FOLDER}).
+ * {@see ComponentResource}. The {@see ComponentResource#getSourcePath()} must return a
+ * valid resource path for This method to return a valid value. The returned value may be either
+ * an {@see org.eclipse.core.resources.IFile} or {@see org.eclipse.core.resources.IFolder}.
+ * A client may use the return value of {@see IResource#getType()} to determine what type
+ * of resource was returned. (@see IResource#FILE} or {@see IResource#FOLDER}).
* </p>
* <p>
* <b>This method may return null. </b>
@@ -210,8 +210,8 @@
/**
* <p>
- * Returns a URI for the supplied {@see WorkbenchComponent}. The URI will be relative to project
- * root of the flexible project that contains the {@see WorkbenchComponent}.
+ * Returns a URI for the supplied {@see WorkbenchComponent}. The URI will be relative to
+ * project root of the flexible project that contains the {@see WorkbenchComponent}.
* </p>
* <p>
* <b>This method may return null. </b>
@@ -236,8 +236,8 @@
* <p>
* Returns a collection of the output containers for the supplied project. The collection may be
* a single root output container or an array of output containers without a common root. For
- * clients that are looking for an output container for a specific {@see WorkbenchComponent}, see
- * {@see #getOutputContainerRoot(WorkbenchComponent)}.
+ * clients that are looking for an output container for a specific {@see WorkbenchComponent},
+ * see {@see #getOutputContainerRoot(WorkbenchComponent)}.
* </p>
* <p>
* If the project is not a ModuleCore project, or has no ModuleCore output containers, an empty
@@ -272,15 +272,15 @@
public static String getDeployedName(URI aFullyQualifiedModuleURI) throws UnresolveableURIException {
return ModuleURIUtil.getDeployedName(aFullyQualifiedModuleURI);
}
-
+
public static IVirtualContainer create(IProject aProject, String aName) {
return new VirtualContainer(aProject, aName, new Path("/")); //$NON-NLS-1$
}
-
+
public static IVirtualFolder create(IFolder aFolder, String aComponentName, IPath aRuntimePath) {
return new VirtualFolder(aFolder, aComponentName, aRuntimePath);
}
-
+
public static ComponentType getComponentType(IVirtualContainer aComponent) {
ModuleCore moduleCore = null;
ComponentType componentType = null;
@@ -289,30 +289,29 @@
WorkbenchComponent wbComponent = moduleCore.findWorkbenchModuleByDeployName(aComponent.getComponentName());
componentType = wbComponent.getComponentType();
} finally {
- if(moduleCore != null)
+ if (moduleCore != null)
moduleCore.dispose();
}
return componentType;
}
-
-
+
+
public static void setComponentType(IVirtualContainer component, ComponentType aComponentType) {
- ModuleCore moduleCore = null;
+ ModuleCore moduleCore = null;
try {
moduleCore = ModuleCore.getModuleCoreForWrite(component.getProject());
WorkbenchComponent wbComponent = moduleCore.findWorkbenchModuleByDeployName(component.getComponentName());
wbComponent.setComponentType(aComponentType);
} finally {
- if(moduleCore != null) {
+ if (moduleCore != null) {
moduleCore.saveIfNecessary(null);
moduleCore.dispose();
}
- }
+ }
}
-
+
public static URI createComponentURI(IProject aContainingProject, String aComponentName) {
- return URI.createURI(PlatformURLModuleConnection.MODULE_PROTOCOL+IPath.SEPARATOR+PlatformURLModuleConnection.RESOURCE_MODULE
- +aContainingProject.getName()+IPath.SEPARATOR+aComponentName);
+ return URI.createURI(PlatformURLModuleConnection.MODULE_PROTOCOL + IPath.SEPARATOR + PlatformURLModuleConnection.RESOURCE_MODULE + aContainingProject.getName() + IPath.SEPARATOR + aComponentName);
}
protected ModuleCore(ModuleCoreNature aNature, boolean toAccessAsReadOnly) {
@@ -414,20 +413,22 @@
public ProjectComponents getModuleModelRoot() {
return (ProjectComponents) structuralModel.getPrimaryRootObject();
}
-
+
/**
* <p>
- * Return the an array of ComponentResource which basically represent the
- * source containers of a WorkbenchResource.
+ * Return the an array of ComponentResource which basically represent the source containers of a
+ * WorkbenchResource.
* <p>
+ *
* @param component
* @return
*/
public ComponentResource[] getSourceContainers(WorkbenchComponent component) {
- //TODO Api in progress: Need to return the Java Source containers of the project
+ // TODO Api in progress: Need to return the Java Source containers of the project
+ // TODO MDE: I don't know if I agree with the placement of this method.
return null;
}
-
+
/**
* <p>
* Clients that wish to modify the individual {@see WorkbenchComponent} instances may use
@@ -444,9 +445,9 @@
/**
* <p>
- * Create a {@see WorkbenchComponent} with the given deployed name. The returned module will
- * be contained by the root object of the current ModuleCore (so no need to re-add it to the
- * Module Module root object). The current ModuleCore must not be read-only to invoke This
+ * Create a {@see WorkbenchComponent} with the given deployed name. The returned module
+ * will be contained by the root object of the current ModuleCore (so no need to re-add it to
+ * the Module Module root object). The current ModuleCore must not be read-only to invoke This
* method.
* </p>
*
@@ -477,8 +478,8 @@
* {@see ComponentResource}
* @param aResource
* A non-null IResource that will be used to set the sourcePath
- * @return A {@see ComponentResource}associated with the current ModuleCore with its
- * sourcePath equivalent to aResource
+ * @return A {@see ComponentResource}associated with the current ModuleCore with its sourcePath
+ * equivalent to aResource
* @throws IllegalStateException
* If the current ModuleCore was created as read-only
*/
@@ -494,15 +495,15 @@
/**
* <p>
- * Create a {@see ComponentType} with the sourcePath of aResource. The returned resource will
- * be associated with the current ModuleCore. The current ModuleCore must not be read-only to
- * invoke This method.
+ * Create a {@see ComponentType} with the sourcePath of aResource. The returned resource
+ * will be associated with the current ModuleCore. The current ModuleCore must not be read-only
+ * to invoke This method.
* </p>
*
* @param aResource
* A non-null IResource that will be used to set the sourcePath
- * @return A {@see ComponentResource}associated with the current ModuleCore with its
- * sourcePath equivalent to aResource
+ * @return A {@see ComponentResource}associated with the current ModuleCore with its sourcePath
+ * equivalent to aResource
* @throws IllegalStateException
* If the current ModuleCore was created as read-only
*/
@@ -560,16 +561,15 @@
/**
* <p>
- * Locates the {@see ComponentResource}s that contain the supplied resource in their
- * source path. There are no representations about the containment of the
- * {@see ComponentResource}s which are returned. The only guarantee is that the returned
- * elements are contained within the same project.
+ * Locates the {@see ComponentResource}s that contain the supplied resource in their source
+ * path. There are no representations about the containment of the {@see ComponentResource}s
+ * which are returned. The only guarantee is that the returned elements are contained within the
+ * same project.
* </p>
* <p>
- * The sourcePath of each {@see ComponentResource} will be mapped to either an IFile
- * or an IFolder. As a result, if the {@see ComponentResource} is a container
- * mapping, the path of the supplied resource may not be identical the sourcePath of the
- * {@see ComponentResource}.
+ * The sourcePath of each {@see ComponentResource} will be mapped to either an IFile or an
+ * IFolder. As a result, if the {@see ComponentResource} is a container mapping, the path
+ * of the supplied resource may not be identical the sourcePath of the {@see ComponentResource}.
* </p>
*
* @param aWorkspaceRelativePath
@@ -590,25 +590,25 @@
module = (WorkbenchComponent) modules.get(i);
resources = module.findWorkbenchModuleResourceBySourcePath(aWorkspaceRelativePath);
if (resources != null && resources.length != 0)
- foundResources.addAll(Arrays.asList(resources));
- }
- if (foundResources.size() > 0)
- return (ComponentResource[]) foundResources.toArray(new ComponentResource[foundResources.size()]);
+ foundResources.addAll(Arrays.asList(resources));
+ }
+ if (foundResources.size() > 0)
+ return (ComponentResource[]) foundResources.toArray(new ComponentResource[foundResources.size()]);
return NO_RESOURCES;
}
/**
* <p>
- * Returns the {@see WorkbenchComponent} contained by the current ModuleCore with the deploy
- * name aModuleName.
+ * Returns the {@see WorkbenchComponent} contained by the current ModuleCore with the
+ * deploy name aModuleName.
* </p>
* <p>
* <b>This method may return null. </b>
* </p>
*
* @param aModuleName
- * @return The {@see WorkbenchComponent}contained by the current ModuleCore with the deploy name
- * aModuleName
+ * @return The {@see WorkbenchComponent}contained by the current ModuleCore with the deploy
+ * name aModuleName
* @see WorkbenchComponent#getDeployedName()
*/
public WorkbenchComponent findWorkbenchModuleByDeployName(String aModuleName) {
@@ -644,12 +644,14 @@
* <p>
* Searches the available {@see WorkbenchComponent}s as available through
* {@see #getWorkbenchModules()} for {@see WorkbenchComponent}s that have a
- * {@see WorkbenchComponent#getModuleType()}with a a module type Id as specified by aModuleTypeId.
+ * {@see WorkbenchComponent#getModuleType()}with a a module type Id as specified by
+ * aModuleTypeId.
* </p>
*
* @param aModuleTypeId
* A non-null module type id ({@see ComponentType#getModuleTypeId()})
- * @return A non-null array of the {@see WorkbenchComponent}s that match the given module type id
+ * @return A non-null array of the {@see WorkbenchComponent}s that match the given module type
+ * id
*/
public WorkbenchComponent[] findWorkbenchModuleByType(String aModuleTypeId) {
WorkbenchComponent[] availableModules = getWorkbenchModules();
@@ -698,10 +700,10 @@
dependentCore = (ModuleCore) dependentCores.get(aModuleURI);
if (dependentCore == null) {
IProject container = getContainingProject(aModuleURI);
- if(container != null) {
+ if (container != null) {
dependentCore = getModuleCoreForRead(container);
dependentCores.put(aModuleURI, dependentCore);
- } else
+ } else
throw new UnresolveableURIException(aModuleURI);
}
}
@@ -711,21 +713,23 @@
private void throwAttemptedReadOnlyModification() {
throw new IllegalStateException("Attempt to modify a ModuleCore edit facade that was loaded as read-only.");
}
-
+
/**
* temporary method to return first module in the project
+ *
* @return first module in the project
* @deprecated
*/
public WorkbenchComponent getFirstModule() {
- if (getWorkbenchModules().length>0)
+ if (getWorkbenchModules().length > 0)
return getWorkbenchModules()[0];
return null;
}
-
+
/**
- * temporary method to return artifact edit for first module in project
- * USERS MUST DISPOSE THE ARTIFACT EDIT
+ * temporary method to return artifact edit for first module in project USERS MUST DISPOSE THE
+ * ARTIFACT EDIT
+ *
* @param project
* @return the artifact edit for the first module
* @deprecated
@@ -739,7 +743,7 @@
module = moduleCore.getFirstModule();
artEdit = ArtifactEdit.getArtifactEditForRead(module);
} finally {
- if (moduleCore !=null)
+ if (moduleCore != null)
moduleCore.dispose();
}
return artEdit;
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualContainer.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualContainer.java
index 3e65919..90f3e16 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualContainer.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualContainer.java
@@ -84,17 +84,7 @@
// moduleCore.dispose();
// }
return new VirtualFolder(getComponentHandle(), getRuntimePath().append(path));
- }
-
- public String getDefaultCharset() throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- // return null;
- }
-
- public String getDefaultCharset(boolean checkImplicit) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- // return null;
- }
+ }
/**
* @see IContainer#getFile(org.eclipse.core.runtime.IPath)
@@ -179,7 +169,8 @@
if (fullRuntimePath.segmentCount() == 1) {
realResource = ModuleCore.getEclipseResource(componentResources[componentResourceIndex]);
- addVirtualResource(virtualResources, realResource, newRuntimePath);
+ if(realResource != null)
+ addVirtualResource(virtualResources, realResource, newRuntimePath);
} else if (fullRuntimePath.segmentCount() > 1) {
virtualResources.add(new VirtualFolder(getComponentHandle(), newRuntimePath));
}
@@ -194,32 +185,11 @@
return (IVirtualResource[]) virtualResources.toArray(new IVirtualResource[virtualResources.size()]);
}
- /**
- * @param virtualResources
- * @param realResource
- * @param newRuntimePath
- */
- private void addVirtualResource(Set virtualResources, IResource realResource, IPath newRuntimePath) {
- if (realResource.getType() == IResource.FOLDER)
- virtualResources.add(new VirtualFolder(getComponentHandle(), newRuntimePath));
- else
- virtualResources.add(new VirtualFile(getComponentHandle(), newRuntimePath));
- }
public IVirtualFile[] findDeletedMembersWithHistory(int depth, IProgressMonitor monitor) throws CoreException {
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
// return null;
- }
-
- public void setDefaultCharset(String charset) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
- public void setDefaultCharset(String charset, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
+ }
public void commit() throws CoreException{
@@ -236,11 +206,15 @@
}
}
}
+
+ public int getType() {
+ return IResource.ROOT;
+ }
protected void doDeleteMetaModel(int updateFlags, IProgressMonitor monitor) {
ModuleCore moduleCore = null;
try {
- moduleCore = ModuleCore.getModuleCoreForRead(getComponentHandle().getProject());
+ moduleCore = ModuleCore.getModuleCoreForWrite(getComponentHandle().getProject());
WorkbenchComponent component = moduleCore.findWorkbenchModuleByDeployName(getComponentHandle().getName());
moduleCore.getModuleModelRoot().getComponents().remove(component);
} finally {
@@ -254,5 +228,18 @@
protected void doDeleteRealResources(int updateFlags, IProgressMonitor monitor) throws CoreException {
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
}
+
+
+ /**
+ * @param virtualResources
+ * @param realResource
+ * @param newRuntimePath
+ */
+ private void addVirtualResource(Set virtualResources, IResource realResource, IPath newRuntimePath) {
+ if (realResource.getType() == IResource.FOLDER)
+ virtualResources.add(new VirtualFolder(getComponentHandle(), newRuntimePath));
+ else
+ virtualResources.add(new VirtualFile(getComponentHandle(), newRuntimePath));
+ }
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualFile.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualFile.java
index ea33452..7c9f6bc 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualFile.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualFile.java
@@ -8,45 +8,20 @@
**************************************************************************************************/
package org.eclipse.wst.common.modulecore.internal.resources;
-import java.io.InputStream;
-
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFileState;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.content.IContentDescription;
import org.eclipse.wst.common.modulecore.resources.IVirtualFile;
public class VirtualFile extends VirtualResource implements IVirtualFile {
-
- private final IFile realFile;
-
-// public VirtualFile(IFile aRealFile, String aComponentName, IPath aRuntimePath) {
-// super(aRealFile.getProject(), aComponentName, aRuntimePath);
-// }
protected VirtualFile(ComponentHandle aComponentHandle, IPath aRuntimePath) {
- super(aComponentHandle, aRuntimePath);
- realFile = getProject().getFile(getProjectRelativePath());
+ super(aComponentHandle, aRuntimePath);
}
- public void appendContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
- realFile.create(source, force, monitor);
- }
-
- public void appendContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
- realFile.appendContents(source, updateFlags, monitor);
- }
-
- public void create(InputStream source, boolean force, IProgressMonitor monitor) throws CoreException {
- realFile.create(source, force, monitor);
- }
-
- public void create(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
- realFile.create(source, updateFlags, monitor);
-
- }
+
public void createLink(IPath aProjectRelativeLocation, int updateFlags, IProgressMonitor monitor) throws CoreException {
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
//
@@ -75,73 +50,25 @@
}
-
- public void delete(boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
- realFile.delete(force, keepHistory, monitor);
-
- }
-
- public String getCharset() throws CoreException {
- return realFile.getCharset();
- }
-
- public String getCharset(boolean checkImplicit) throws CoreException {
- return realFile.getCharset(checkImplicit);
- }
-
- public IContentDescription getContentDescription() throws CoreException {
- return realFile.getContentDescription();
- }
-
- public InputStream getContents() throws CoreException {
- return realFile.getContents();
- }
-
- public InputStream getContents(boolean force) throws CoreException {
- return realFile.getContents(force);
- }
-
-
- public IFileState[] getHistory(IProgressMonitor monitor) throws CoreException {
- return realFile.getHistory(monitor);
- }
-
- public void move(IPath destination, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
- public void setCharset(String newCharset, IProgressMonitor monitor) throws CoreException {
- realFile.setCharset(newCharset, monitor);
-
- }
-
- public void setContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
- realFile.setContents(source, force, keepHistory, monitor);
- }
-
- public void setContents(IFileState source, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
- realFile.setContents(source, force, keepHistory, monitor);
- }
-
- public void setContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {
- realFile.setContents(source, updateFlags, monitor);
- }
-
- public void setContents(IFileState source, int updateFlags, IProgressMonitor monitor) throws CoreException {
- realFile.setContents(source, updateFlags, monitor);
+
+ public int getType() {
+ return IResource.FILE;
}
public IFile getRealFile() {
- return realFile;
+ return getProject().getFile(getProjectRelativePath());
}
public IFile[] getRealFiles() {
- return new IFile[] {realFile};
+ return new IFile[] {getRealFile()};
}
+
+ protected void doDeleteMetaModel(int updateFlags,IProgressMonitor monitor) {
+
+ }
protected void doDeleteRealResources(int updateFlags, IProgressMonitor monitor) throws CoreException {
- realFile.delete(updateFlags, monitor);
+
}
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualFolder.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualFolder.java
index 9bfe16f..6664947 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualFolder.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualFolder.java
@@ -9,14 +9,12 @@
package org.eclipse.wst.common.modulecore.internal.resources;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -27,7 +25,6 @@
import org.eclipse.wst.common.modulecore.WorkbenchComponent;
import org.eclipse.wst.common.modulecore.internal.impl.ResourceTreeRoot;
import org.eclipse.wst.common.modulecore.resources.IVirtualContainer;
-import org.eclipse.wst.common.modulecore.resources.IVirtualFile;
import org.eclipse.wst.common.modulecore.resources.IVirtualFolder;
import org.eclipse.wst.common.modulecore.resources.IVirtualResource;
@@ -66,18 +63,13 @@
protected VirtualFolder(ComponentHandle aComponentHandle, IPath aRuntimePath) {
super(aComponentHandle, aRuntimePath);
}
-
+
// TODO WTP:Implement this method
- public void create(boolean force, boolean local, IProgressMonitor monitor) throws CoreException {
- create((force ? IResource.FORCE : IResource.NONE), local, monitor);
- }
-
- // TODO WTP:Implement this method
- public void create(int updateFlags, boolean local, IProgressMonitor monitor) throws CoreException {
+ public void create(int updateFlags, IProgressMonitor monitor) throws CoreException {
IVirtualContainer container = ModuleCore.create(getProject(), getComponentHandle().getName());
IVirtualFolder root = container.getFolder(new Path("/")); //$NON-NLS-1$
- IFolder realFolder = ResourcesPlugin.getWorkspace().getRoot().getFolder(root.getWorkspaceRelativePath());
+ IFolder realFolder = getProject().getFolder(root.getProjectRelativePath());
IFolder newFolder = realFolder.getFolder(getRuntimePath());
createResource(newFolder, updateFlags, monitor);
@@ -136,11 +128,6 @@
}
- public void move(IPath destination, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
// TODO WTP:Implement this method
public boolean exists(IPath path) {
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
@@ -170,53 +157,69 @@
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
// return null;
}
-
- public String getDefaultCharset() throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- // return null;
- }
-
- public String getDefaultCharset(boolean checkImplicit) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- // return null;
- }
-
- public IVirtualFile[] findDeletedMembersWithHistory(int depth, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- // return null;
- }
-
- public void setDefaultCharset(String charset) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
- public void setDefaultCharset(String charset, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
+
+ public int getType() {
+ return IResource.FOLDER;
}
public void commit() throws CoreException {
-
- // ModuleCore moduleCore = null;
- // try {
- // moduleCore = ModuleCore.getModuleCoreForWrite(getProject());
- // WorkbenchComponent component =
- // moduleCore.findWorkbenchModuleByDeployName(getComponentHandle().getName());
- // if(component == null)
- // moduleCore.createWorkbenchModule(getComponentHandle().getName());
- // } finally {
- // if (moduleCore != null) {
- // moduleCore.saveIfNecessary(null);
- // moduleCore.dispose();
- // }
- // }
+
}
+ public IFolder getRealFolder() {
+ return getProject().getFolder(getProjectRelativePath());
+ }
+
+ public IFolder[] getRealFolders() {
+ return new IFolder[] {getRealFolder()};
+ }
+
+ protected void doDeleteMetaModel(int updateFlags, IProgressMonitor monitor) {
+
+ // only handles explicit mappings
+ ModuleCore moduleCore = null;
+ try {
+ URI runtimeURI = URI.createURI(getRuntimePath().toString());
+ moduleCore = ModuleCore.getModuleCoreForWrite(getProject());
+ WorkbenchComponent component = moduleCore.findWorkbenchModuleByDeployName(getComponentName());
+ ComponentResource[] resources = component.findWorkbenchModuleResourceByDeployPath(runtimeURI);
+ for (int i = 0; i < resources.length; i++) {
+ if(runtimeURI.equals(resources[i].getRuntimePath()))
+ component.getResources().remove(resources[i]);
+ }
+
+ } finally {
+ if (moduleCore != null) {
+ moduleCore.saveIfNecessary(null);
+ moduleCore.dispose();
+ }
+ }
+ }
+
protected void doDeleteRealResources(int updateFlags, IProgressMonitor monitor) throws CoreException {
- for (Iterator iter = realFolders.iterator(); iter.hasNext();) {
- IFolder realFolder = (IFolder) iter.next();
- realFolder.delete(updateFlags, monitor);
+
+ // only handles explicit mappings
+ ModuleCore moduleCore = null;
+ try {
+ URI runtimeURI = URI.createURI(getRuntimePath().toString());
+ moduleCore = ModuleCore.getModuleCoreForWrite(getProject());
+ WorkbenchComponent component = moduleCore.findWorkbenchModuleByDeployName(getComponentName());
+ ComponentResource[] resources = component.findWorkbenchModuleResourceByDeployPath(runtimeURI);
+ IResource realResource;
+ for (int i = 0; i < resources.length; i++) {
+ if(runtimeURI.equals(resources[i].getRuntimePath())) {
+ realResource = ModuleCore.getEclipseResource(resources[i]);
+ if(realResource != null && realResource.getType() == getType())
+ realResource.delete(updateFlags, monitor);
+ }
+
+ }
+
+ } finally {
+ if (moduleCore != null) {
+ moduleCore.saveIfNecessary(null);
+ moduleCore.dispose();
+ }
}
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualResource.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualResource.java
index 0194127..7fb9691 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualResource.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/internal/resources/VirtualResource.java
@@ -35,6 +35,7 @@
private IPath runtimePath;
private int hashCode;
private String toString;
+ private static final String EMPTY_STRING = ""; //$NON-NLS-1$
protected VirtualResource(ComponentHandle aComponentHandle, IPath aRuntimePath) {
componentHandle = aComponentHandle;
@@ -64,21 +65,10 @@
public void accept(IResourceVisitor visitor, int depth, int memberFlags) throws CoreException {
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- }
-
- public void copy(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
- public void copy(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
+ }
+
public void delete(boolean force, IProgressMonitor monitor) throws CoreException {
delete(force ? IResource.FORCE : IResource.NONE, monitor);
-
}
public void delete(boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {
@@ -89,12 +79,12 @@
public void delete(int updateFlags, IProgressMonitor monitor) throws CoreException {
- doDeleteMetaModel(updateFlags, monitor);
-
- if( (updateFlags & ModuleCore.DELETE_METAMODEL_ONLY) == 0) {
+ if( (updateFlags & IVirtualResource.DELETE_METAMODEL_ONLY) == 0) {
doDeleteRealResources(updateFlags, monitor);
}
+
+ doDeleteMetaModel(updateFlags, monitor);
}
protected void doDeleteMetaModel(int updateFlags,IProgressMonitor monitor) {
@@ -117,82 +107,27 @@
// TODO WTP:Implement this method
public boolean exists() {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- //return false;
+ return true;
}
public String getFileExtension() {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- //return null;
+ String name = getName();
+ int dot = name.lastIndexOf('.');
+ if (dot == -1)
+ return null;
+ if(dot == name.length()-1)
+ return EMPTY_STRING;
+ return name.substring(dot+1);
}
-
- // TODO WTP:Implement this method
+
public IPath getWorkspaceRelativePath() {
- ModuleCore moduleCore = null;
- try {
- moduleCore = ModuleCore.getModuleCoreForRead(getProject());
- WorkbenchComponent component = moduleCore.findWorkbenchModuleByDeployName(getComponentHandle().getName());
- ResourceTreeRoot root = ResourceTreeRoot.getDeployResourceTreeRoot(component);
-
- ComponentResource[] componentResources = new ComponentResource[0];
- IPath currentPath = null;
- IPath potentialMatchRuntimePath = null;
-
- do {
- currentPath = (currentPath == null) ? getRuntimePath() : currentPath.removeLastSegments(1);
- componentResources = root.findModuleResources(currentPath, false);
- for (int i = 0; i < componentResources.length; i++) {
- potentialMatchRuntimePath = new Path(componentResources[i].getRuntimePath().path());
- if(isPotentalMatch(potentialMatchRuntimePath)) {
- IPath sourcePath = new Path(componentResources[i].getSourcePath().path());
- IPath subpath = getRuntimePath().removeFirstSegments(potentialMatchRuntimePath.segmentCount());
- IPath finalPath = sourcePath.append(subpath);
- // already workspace relative
- if(finalPath.segment(0).equals(getComponentHandle().getProject().getName())) {
- return finalPath;
- }
- // make workspace relative
- return new Path(IPath.SEPARATOR+getProject().getName()).append(finalPath);
- }
- }
- } while(currentPath.segmentCount() > 0 && componentResources.length == 0);
- } finally {
- if(moduleCore != null) {
- moduleCore.dispose();
- }
- }
- return getRuntimePath();
- }
-
- private boolean isPotentalMatch(IPath aRuntimePath) {
- return aRuntimePath.isPrefixOf(getRuntimePath());
- }
-
- // TODO WTP:Implement this method
- public IPath getLocation() {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- //return null;
- }
-
- // TODO WTP:Implement this method
- public String getName() {
- return getRuntimePath().lastSegment();
+ return getProject().getFullPath().append(getProjectRelativePath());
}
- public String getComponentName() {
- return getComponentHandle().getName();
- }
-
- // TODO WTP:Implement this method
- public IVirtualContainer getParent() {
- return new VirtualFolder(getComponentHandle(), getRuntimePath().removeLastSegments(1));
- }
-
- public IProject getProject() {
- return getComponentHandle().getProject();
- }
-
- // TODO WTP:Implement this method
+ public IPath getRuntimePath() {
+ return runtimePath;
+ }
+
public IPath getProjectRelativePath() {
ModuleCore moduleCore = null;
@@ -229,43 +164,31 @@
}
}
return getRuntimePath();
- }
-
- public int getType() {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- //return 0;
+ }
+
+ public String getName() {
+ return getRuntimePath().lastSegment();
+ }
+
+ public String getComponentName() {
+ return getComponentHandle().getName();
}
+ public IVirtualContainer getParent() {
+ if(getRuntimePath().segmentCount() > 0)
+ return new VirtualFolder(getComponentHandle(), getRuntimePath().removeLastSegments(1));
+ return ModuleCore.create(getProject(), getComponentName());
+ }
+
+ public IProject getProject() {
+ return getComponentHandle().getProject();
+ }
public boolean isAccessible() {
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
//return false;
}
-
- public boolean isReadOnly() {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
- //return false;
- }
-
- public void move(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
- public void move(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
- public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
-
- public void setReadOnly(boolean readOnly) {
- throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
-
- }
+
public Object getAdapter(Class adapter) {
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
//return null;
@@ -280,11 +203,7 @@
throw new UnsupportedOperationException("Method not supported"); //$NON-NLS-1$
//return false;
}
-
- public IPath getRuntimePath() {
- return runtimePath;
- }
-
+
public String toString() {
if(toString == null)
toString = "["+getComponentHandle()+":"+getRuntimePath()+"]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -301,7 +220,12 @@
return hashCode() == ((anOther != null && anOther instanceof VirtualResource) ? anOther.hashCode() : 0 );
}
- public ComponentHandle getComponentHandle() {
+ protected ComponentHandle getComponentHandle() {
return componentHandle;
}
+
+ private boolean isPotentalMatch(IPath aRuntimePath) {
+ return aRuntimePath.isPrefixOf(getRuntimePath());
+ }
+
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualContainer.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualContainer.java
index 5353d31..24f3b4a 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualContainer.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualContainer.java
@@ -12,7 +12,6 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
public interface IVirtualContainer extends IVirtualResource {
@@ -234,35 +233,6 @@
* Returns a list of all member resources (projects, folders and files)
* in this resource, in no particular order.
* <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * members(includePhantoms ? INCLUDE_PHANTOMS : IVirtualResource.NONE);
- * </pre>
- * Team-private member resources are <b>not</b> included in the result.
- * </p>
- *
- * @param includePhantoms <code>true</code> if phantom resources are
- * of interest; <code>false</code> if phantom resources are not of
- * interest
- * @return an array of members of this resource
- * @exception CoreException if this request fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> <code>includePhantoms</code> is <code>false</code> and
- * this resource does not exist.</li>
- * <li> <code>includePhantoms</code> is <code>false</code> and
- * this resource is a project that is not open.</li>
- * </ul>
- * @see #members(int)
- * @see IVirtualResource#exists()
- * @see IVirtualResource#isPhantom()
- */
- public IVirtualResource[] members(boolean includePhantoms) throws CoreException;
-
- /**
- * Returns a list of all member resources (projects, folders and files)
- * in this resource, in no particular order.
- * <p>
* If the <code>INCLUDE_PHANTOMS</code> flag is not specified in the member
* flags (recommended), only member resources that exist will be returned.
* If the <code>INCLUDE_PHANTOMS</code> flag is specified,
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualFile.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualFile.java
index 8ed564c..b5971f4 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualFile.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualFile.java
@@ -10,302 +10,15 @@
*******************************************************************************/
package org.eclipse.wst.common.modulecore.resources;
-import java.io.InputStream;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IEncodedStorage;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFileState;
-import org.eclipse.core.resources.IStorage;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentTypeManager;
public interface IVirtualFile extends IVirtualResource {
/**
- * Character encoding constant (value 0) which identifies
- * files that have an unknown character encoding scheme.
- *
- * @see IVirtualFile#getEncoding()
- * @deprecated see getEncoding for details
- */
- public int ENCODING_UNKNOWN = 0;
- /**
- * Character encoding constant (value 1) which identifies
- * files that are encoded with the US-ASCII character encoding scheme.
- *
- * @see IVirtualFile#getEncoding()
- * @deprecated see getEncoding for details
- */
- public int ENCODING_US_ASCII = 1;
- /**
- * Character encoding constant (value 2) which identifies
- * files that are encoded with the ISO-8859-1 character encoding scheme,
- * also known as ISO-LATIN-1.
- *
- * @see IVirtualFile#getEncoding()
- * @deprecated see getEncoding for details
- */
- public int ENCODING_ISO_8859_1 = 2;
- /**
- * Character encoding constant (value 3) which identifies
- * files that are encoded with the UTF-8 character encoding scheme.
- *
- * @see IVirtualFile#getEncoding()
- * @deprecated see getEncoding for details
- */
- public int ENCODING_UTF_8 = 3;
- /**
- * Character encoding constant (value 4) which identifies
- * files that are encoded with the UTF-16BE character encoding scheme.
- *
- * @see IVirtualFile#getEncoding()
- * @deprecated see getEncoding for details
- */
- public int ENCODING_UTF_16BE = 4;
- /**
- * Character encoding constant (value 5) which identifies
- * files that are encoded with the UTF-16LE character encoding scheme.
- *
- * @see IVirtualFile#getEncoding()
- * @deprecated see getEncoding for details
- */
- public int ENCODING_UTF_16LE = 5;
- /**
- * Character encoding constant (value 6) which identifies
- * files that are encoded with the UTF-16 character encoding scheme.
- *
- * @see IVirtualFile#getEncoding()
- * @deprecated see getEncoding for details
- */
- public int ENCODING_UTF_16 = 6;
-
- /**
- * Appends the entire contents of the given stream to this file.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * appendContents(source, (keepHistory ? KEEP_HISTORY : IVirtualResource.NONE) | (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this file's content have been changed.
- * </p>
- * <p>
- * This method is long-running; progress and cancelation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param source an input stream containing the new contents of the file
- * @param force a flag controlling how to deal with resources that
- * are not in sync with the local file system
- * @param keepHistory a flag indicating whether or not to store
- * the current contents in the local history
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> The corresponding location in the local file system
- * is occupied by a directory.</li>
- * <li> The workspace is not in sync with the corresponding location
- * in the local file system and <code>force </code> is <code>false</code>.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * <li> The file modification validator disallowed the change.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see #appendContents(java.io.InputStream,int,IProgressMonitor)
- */
- public void appendContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Appends the entire contents of the given stream to this file.
- * The stream, which must not be <code>null</code>, will get closed
- * whether this method succeeds or fails.
- * <p>
- * The <code>FORCE</code> update flag controls how this method deals with
- * cases where the workspace is not completely in sync with the local file
- * system. If <code>FORCE</code> is not specified, the method will only attempt
- * to overwrite a corresponding file in the local file system provided
- * it is in sync with the workspace. This option ensures there is no
- * unintended data loss; it is the recommended setting.
- * However, if <code>FORCE</code> is specified, an attempt will be made
- * to write a corresponding file in the local file system, overwriting any
- * existing one if need be. In either case, if this method succeeds, the
- * resource will be marked as being local (even if it wasn't before).
- * </p>
- * <p>
- * If this file is non-local then this method will always fail. The only exception
- * is when <code>FORCE</code> is specified and the file exists in the local
- * file system. In this case the file is made local and the given contents are appended.
- * </p>
- * <p>
- * The <code>KEEP_HISTORY</code> update flag controls whether or not a copy of
- * current contents of this file should be captured in the workspace's local
- * history (properties are not recorded in the local history). The local history
- * mechanism serves as a safety net to help the user recover from mistakes that
- * might otherwise result in data loss. Specifying <code>KEEP_HISTORY</code>
- * is recommended except in circumstances where past states of the files are of
- * no conceivable interest to the user. Note that local history is maintained
- * with each individual project, and gets discarded when a project is deleted
- * from the workspace. This flag is ignored if the file was not previously local.
- * </p>
- * <p>
- * Update flags other than <code>FORCE</code> and <code>KEEP_HISTORY</code>
- * are ignored.
- * </p>
- * <p>
- * Prior to modifying the contents of this file, the file modification validator (if provided
- * by the VCM plug-in), will be given a chance to perform any last minute preparations. Validation
- * is performed by calling <code>IVirtualFileModificationValidator.validateSave</code> on this file.
- * If the validation fails, then this operation will fail.
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this file's content have been changed.
- * </p>
- * <p>
- * This method is long-running; progress and cancelation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param source an input stream containing the new contents of the file
- * @param updateFlags bit-wise or of update flag constants
- * (<code>FORCE</code> and <code>KEEP_HISTORY</code>)
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> The corresponding location in the local file system
- * is occupied by a directory.</li>
- * <li> The workspace is not in sync with the corresponding location
- * in the local file system and <code>FORCE</code> is not specified.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * <li> The file modification validator disallowed the change.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see IVirtualResourceRuleFactory#modifyRule(IVirtualResource)
- * @since 2.0
- */
- public void appendContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Creates a new file resource as a member of this handle's parent resource.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * create(source, (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that the file has been added to its parent.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param source an input stream containing the initial contents of the file,
- * or <code>null</code> if the file should be marked as not local
- * @param force a flag controlling how to deal with resources that
- * are not in sync with the local file system
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource already exists in the workspace.</li>
- * <li> The parent of this resource does not exist.</li>
- * <li> The project of this resource is not accessible.</li>
- * <li> The parent contains a resource of a different type
- * at the same path as this resource.</li>
- * <li> The name of this resource is not valid (according to
- * <code>IWorkspace.validateName</code>).</li>
- * <li> The corresponding location in the local file system is occupied
- * by a directory.</li>
- * <li> The corresponding location in the local file system is occupied
- * by a file and <code>force </code> is <code>false</code>.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- */
- public void create(InputStream source, boolean force, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Creates a new file resource as a member of this handle's parent resource.
- * The resource's contents are supplied by the data in the given stream.
- * This method closes the stream whether it succeeds or fails.
- * If the stream is <code>null</code> then a file is not created in the local
- * file system and the created file is marked as being non-local.
- * <p>
- * The <code>FORCE</code> update flag controls how this method deals with
- * cases where the workspace is not completely in sync with the local file
- * system. If <code>FORCE</code> is not specified, the method will only attempt
- * to write a file in the local file system if it does not already exist.
- * This option ensures there is no unintended data loss; it is the recommended
- * setting. However, if <code>FORCE</code> is specified, this method will
- * attempt to write a corresponding file in the local file system,
- * overwriting any existing one if need be.
- * </p>
- * <p>
- * Update flags other than <code>FORCE</code> are ignored.
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that the file has been added to its parent.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param source an input stream containing the initial contents of the file,
- * or <code>null</code> if the file should be marked as not local
- * @param updateFlags bit-wise or of update flag constants
- * (only <code>FORCE</code> is relevant here)
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource already exists in the workspace.</li>
- * <li> The parent of this resource does not exist.</li>
- * <li> The project of this resource is not accessible.</li>
- * <li> The parent contains a resource of a different type
- * at the same path as this resource.</li>
- * <li> The name of this resource is not valid (according to
- * <code>IWorkspace.validateName</code>).</li>
- * <li> The corresponding location in the local file system is occupied
- * by a directory.</li>
- * <li> The corresponding location in the local file system is occupied
- * by a file and <code>FORCE</code> is not specified.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see IVirtualResourceRuleFactory#createRule(IVirtualResource)
- * @since 2.0
- */
- public void create(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException;
-
- /**
* Creates a new file resource as a member of this handle's parent resource.
* The file's contents will be located in the file specified by the given
* file system path. The given path must be either an absolute file system
@@ -370,507 +83,7 @@
* @since 2.1
*/
public void createLink(IPath localLocation, int updateFlags, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Deletes this file from the workspace.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * delete((keepHistory ? KEEP_HISTORY : IVirtualResource.NONE) | (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this folder has been removed from its parent.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param force a flag controlling whether resources that are not
- * in sync with the local file system will be tolerated
- * @param keepHistory a flag controlling whether files under this folder
- * should be stored in the workspace's local history
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource could not be deleted for some reason.</li>
- * <li> This resource is out of sync with the local file system
- * and <code>force</code> is <code>false</code>.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see IVirtualResource#delete(int,IProgressMonitor)
- * @see IVirtualResourceRuleFactory#deleteRule(IVirtualResource)
- */
- public void delete(boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Returns the name of a charset to be used when decoding the contents of this
- * file into characters.
- * <p>
- * If checkImplicit is <code>false</code>, this method will return the
- * charset defined by calling <code>setCharset</code>, provided this file
- * exists, or <code>null</code> otherwise.
- * </p><p>
- * If checkImplicit is <code>true</code>, this method uses the following
- * algorithm to determine the charset to be returned:
- * <ol>
- * <li>the charset defined by calling #setCharset, if any, and this file
- * exists, or</li>
- * <li>the charset automatically discovered based on this file's contents,
- * if one can be determined, or</li>
- * <li>the default encoding for this file's parent (as defined by
- * <code>IContainer#getDefaultCharset</code>).</li>
- * </ol>
- * </p><p>
- * <b>Note</b>: this method does not check whether the result is a supported
- * charset name. Callers should be prepared to handle
- * <code>UnsupportedEncodingException</code> where this charset is used.
- * </p>
- *
- * @return the name of a charset, or <code>null</code>
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource could not be read.</li>
- * <li> This resource is not local.</li>
- * <li> The corresponding location in the local file system
- * is occupied by a directory.</li>
- * </ul>
- * @see IEncodedStorage#getCharset()
- * @see IContainer#getDefaultCharset()
- * @since 3.0
- */
- public String getCharset(boolean checkImplicit) throws CoreException;
-
- /**
- * Returns a description for this file's current contents. Returns
- * <code>null</code> if a description cannot be obtained.
- * <p>
- * Calling this method produces a similar effect as calling
- * <code>getDescriptionFor(getContents(), getName(), IContentDescription.ALL)</code>
- * on <code>IContentTypeManager</code>, but provides better
- * opportunities for improved performance. Therefore, when manipulating
- * <code>IVirtualFile</code>s, clients should call this method instead of
- * <code>IContentTypeManager.getDescriptionFor</code>.
- * </p>
- *
- * @return a description for this file's current contents, or
- * <code>null</code>
- * @throws CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource could not be read.</li>
- * <li> This resource is not local.</li>
- * <li> The corresponding location in the local file system
- * is occupied by a directory.</li>
- * </ul>
- * @see IContentDescription
- * @see IContentTypeManager#getDescriptionFor(InputStream, String, QualifiedName[])
- * @since 3.0
- */
- public IContentDescription getContentDescription() throws CoreException;
-
- /**
- * Returns an open input stream on the contents of this file.
- * This refinement of the corresponding <code>IStorage</code> method
- * returns an open input stream on the contents of this file.
- * The client is responsible for closing the stream when finished.
- *
- * @return an input stream containing the contents of the file
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource is not local.</li>
- * <li> The workspace is not in sync with the corresponding location
- * in the local file system.</li>
- * </ul>
- */
- public InputStream getContents() throws CoreException;
-
- /**
- * This refinement of the corresponding <code>IStorage</code> method
- * returns an open input stream on the contents of this file.
- * The client is responsible for closing the stream when finished.
- * If force is <code>true</code> the file is opened and an input
- * stream returned regardless of the sync state of the file. The file
- * is not synchronized with the workspace.
- * If force is <code>false</code> the method fails if not in sync.
- *
- * @param force a flag controlling how to deal with resources that
- * are not in sync with the local file system
- * @return an input stream containing the contents of the file
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource is not local.</li>
- * <li> The workspace is not in sync with the corresponding location
- * in the local file system and force is <code>false</code>.</li>
- * </ul>
- */
- public InputStream getContents(boolean force) throws CoreException;
-
- /**
- * Returns the full path of this file.
- * This refinement of the corresponding <code>IStorage</code> and <code>IVirtualResource</code>
- * methods links the semantics of resource and storage object paths such that
- * <code>IVirtualFile</code>s always have a path and that path is relative to the
- * containing workspace.
- *
- * @see IVirtualResource#getWorkspaceRelativePath()
- * @see IStorage#getFullPath()
- */
- public IPath getWorkspaceRelativePath();
-
- /**
- * Returns a list of past states of this file known to this workspace.
- * Recently added states first.
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @return an array of states of this file
- * @exception CoreException if this method fails.
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- */
- public IFileState[] getHistory(IProgressMonitor monitor) throws CoreException;
-
- /**
- * Returns the name of this file.
- * This refinement of the corresponding <code>IStorage</code> and <code>IVirtualResource</code>
- * methods links the semantics of resource and storage object names such that
- * <code>IVirtualFile</code>s always have a name and that name equivalent to the
- * last segment of its full path.
- *
- * @see IVirtualResource#getName()
- * @see IStorage#getName()
- */
- public String getName();
-
- /**
- * Returns whether this file is read-only.
- * This refinement of the corresponding <code>IStorage</code> and <code>IVirtualResource</code>
- * methods links the semantics of read-only resources and read-only storage objects.
- *
- * @see IVirtualResource#isReadOnly()
- * @see IStorage#isReadOnly()
- */
- public boolean isReadOnly();
-
- /**
- * Moves this resource to be at the given location.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * move(destination, (keepHistory ? KEEP_HISTORY : IVirtualResource.NONE) | (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this file has been removed from its parent and a new file
- * has been added to the parent of the destination.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param destination the destination path
- * @param force a flag controlling whether resources that are not
- * in sync with the local file system will be tolerated
- * @param keepHistory a flag controlling whether files under this folder
- * should be stored in the workspace's local history
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this resource could not be moved. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource is not local.</li>
- * <li> The resource corresponding to the parent destination path does not exist.</li>
- * <li> The resource corresponding to the parent destination path is a closed
- * project.</li>
- * <li> A resource at destination path does exist.</li>
- * <li> A resource of a different type exists at the destination path.</li>
- * <li> This resource is out of sync with the local file system
- * and <code>force</code> is <code>false</code>.</li>
- * <li> The workspace and the local file system are out of sync
- * at the destination resource or one of its descendents.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- *
- * @see IVirtualResource#move(IPath,int,IProgressMonitor)
- * @see IVirtualResourceRuleFactory#moveRule(IVirtualResource, IVirtualResource)
- */
- public void move(IPath destination, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Sets the charset for this file. Passing a value of <code>null</code>
- * will remove the charset setting for this resource.
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this file's encoding has changed.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param newCharset a charset name, or <code>null</code>
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> An error happened while persisting this setting.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See {@link IVirtualResourceChangeEvent} for more details.</li>
- * </ul>
- * @see #getCharset()
- * @see IVirtualResourceRuleFactory#charsetRule(IVirtualResource)
- * @since 3.0
- */
- public void setCharset(String newCharset, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Sets the contents of this file to the bytes in the given input stream.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * setContents(source, (keepHistory ? KEEP_HISTORY : IVirtualResource.NONE) | (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this file's contents have been changed.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param source an input stream containing the new contents of the file
- * @param force a flag controlling how to deal with resources that
- * are not in sync with the local file system
- * @param keepHistory a flag indicating whether or not store
- * the current contents in the local history
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> The corresponding location in the local file system
- * is occupied by a directory.</li>
- * <li> The workspace is not in sync with the corresponding location
- * in the local file system and <code>force </code> is <code>false</code>.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * <li> The file modification validator disallowed the change.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see #setContents(java.io.InputStream,int,IProgressMonitor)
- */
- public void setContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Sets the contents of this file to the bytes in the given file state.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * setContents(source, (keepHistory ? KEEP_HISTORY : IVirtualResource.NONE) | (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this file's content have been changed.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param source a previous state of this resource
- * @param force a flag controlling how to deal with resources that
- * are not in sync with the local file system
- * @param keepHistory a flag indicating whether or not store
- * the current contents in the local history
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> The state does not exist.</li>
- * <li> The corresponding location in the local file system
- * is occupied by a directory.</li>
- * <li> The workspace is not in sync with the corresponding location
- * in the local file system and <code>force </code> is <code>false</code>.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * <li> The file modification validator disallowed the change.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see #setContents(IFileState,int,IProgressMonitor)
- */
- public void setContents(IFileState source, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Sets the contents of this file to the bytes in the given input stream.
- * The stream will get closed whether this method succeeds or fails.
- * If the stream is <code>null</code> then the content is set to be the
- * empty sequence of bytes.
- * <p>
- * The <code>FORCE</code> update flag controls how this method deals with
- * cases where the workspace is not completely in sync with the local file
- * system. If <code>FORCE</code> is not specified, the method will only attempt
- * to overwrite a corresponding file in the local file system provided
- * it is in sync with the workspace. This option ensures there is no
- * unintended data loss; it is the recommended setting.
- * However, if <code>FORCE</code> is specified, an attempt will be made
- * to write a corresponding file in the local file system, overwriting any
- * existing one if need be. In either case, if this method succeeds, the
- * resource will be marked as being local (even if it wasn't before).
- * </p>
- * <p>
- * The <code>KEEP_HISTORY</code> update flag controls whether or not a copy of
- * current contents of this file should be captured in the workspace's local
- * history (properties are not recorded in the local history). The local history
- * mechanism serves as a safety net to help the user recover from mistakes that
- * might otherwise result in data loss. Specifying <code>KEEP_HISTORY</code>
- * is recommended except in circumstances where past states of the files are of
- * no conceivable interest to the user. Note that local history is maintained
- * with each individual project, and gets discarded when a project is deleted
- * from the workspace. This flag is ignored if the file was not previously local.
- * </p>
- * <p>
- * Update flags other than <code>FORCE</code> and <code>KEEP_HISTORY</code>
- * are ignored.
- * </p>
- * <p>
- * Prior to modifying the contents of this file, the file modification validator (if provided
- * by the VCM plug-in), will be given a chance to perform any last minute preparations. Validation
- * is performed by calling <code>IVirtualFileModificationValidator.validateSave</code> on this file.
- * If the validation fails, then this operation will fail.
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this file's content have been changed.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param source an input stream containing the new contents of the file
- * @param updateFlags bit-wise or of update flag constants
- * (<code>FORCE</code> and <code>KEEP_HISTORY</code>)
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> The corresponding location in the local file system
- * is occupied by a directory.</li>
- * <li> The workspace is not in sync with the corresponding location
- * in the local file system and <code>FORCE</code> is not specified.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * <li> The file modification validator disallowed the change.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see IVirtualResourceRuleFactory#modifyRule(IVirtualResource)
- * @since 2.0
- */
- public void setContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Sets the contents of this file to the bytes in the given file state.
- * <p>
- * The <code>FORCE</code> update flag controls how this method deals with
- * cases where the workspace is not completely in sync with the local file
- * system. If <code>FORCE</code> is not specified, the method will only attempt
- * to overwrite a corresponding file in the local file system provided
- * it is in sync with the workspace. This option ensures there is no
- * unintended data loss; it is the recommended setting.
- * However, if <code>FORCE</code> is specified, an attempt will be made
- * to write a corresponding file in the local file system, overwriting any
- * existing one if need be. In either case, if this method succeeds, the
- * resource will be marked as being local (even if it wasn't before).
- * </p>
- * <p>
- * The <code>KEEP_HISTORY</code> update flag controls whether or not a copy of
- * current contents of this file should be captured in the workspace's local
- * history (properties are not recorded in the local history). The local history
- * mechanism serves as a safety net to help the user recover from mistakes that
- * might otherwise result in data loss. Specifying <code>KEEP_HISTORY</code>
- * is recommended except in circumstances where past states of the files are of
- * no conceivable interest to the user. Note that local history is maintained
- * with each individual project, and gets discarded when a project is deleted
- * from the workspace. This flag is ignored if the file was not previously local.
- * </p>
- * <p>
- * Update flags other than <code>FORCE</code> and <code>KEEP_HISTORY</code>
- * are ignored.
- * </p>
- * <p>
- * Prior to modifying the contents of this file, the file modification validator (if provided
- * by the VCM plug-in), will be given a chance to perform any last minute preparations. Validation
- * is performed by calling <code>IVirtualFileModificationValidator.validateSave</code> on this file.
- * If the validation fails, then this operation will fail.
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this file's content have been changed.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param source a previous state of this resource
- * @param updateFlags bit-wise or of update flag constants
- * (<code>FORCE</code> and <code>KEEP_HISTORY</code>)
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> The state does not exist.</li>
- * <li> The corresponding location in the local file system
- * is occupied by a directory.</li>
- * <li> The workspace is not in sync with the corresponding location
- * in the local file system and <code>FORCE</code> is not specified.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * <li> The file modification validator disallowed the change.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see IVirtualResourceRuleFactory#modifyRule(IVirtualResource)
- * @since 2.0
- */
- public void setContents(IFileState source, int updateFlags, IProgressMonitor monitor) throws CoreException;
+
public IFile getRealFile();
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualFolder.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualFolder.java
index 55c6c55..3cee793 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualFolder.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualFolder.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.wst.common.modulecore.resources;
+import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -17,55 +18,6 @@
public interface IVirtualFolder extends IVirtualContainer {
-
- /**
- * Creates a new folder resource as a member of this handle's parent resource.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * create((force ? FORCE : IVirtualResource.NONE), local, monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that the folder has been added to its parent.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param force a flag controlling how to deal with resources that
- * are not in sync with the local file system
- * @param local a flag controlling whether or not the folder will be local
- * after the creation
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource already exists in the workspace.</li>
- * <li> The workspace contains a resource of a different type
- * at the same path as this resource.</li>
- * <li> The parent of this resource does not exist.</li>
- * <li> The parent of this resource is a project that is not open.</li>
- * <li> The parent contains a resource of a different type
- * at the same path as this resource.</li>
- * <li> The name of this resource is not valid (according to
- * <code>IWorkspace.validateName</code>).</li>
- * <li> The corresponding location in the local file system is occupied
- * by a file (as opposed to a directory).</li>
- * <li> The corresponding location in the local file system is occupied
- * by a folder and <code>force </code> is <code>false</code>.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- * @see IVirtualFolder#create(int,boolean,IProgressMonitor)
- */
- public void create(boolean force, boolean local, IProgressMonitor monitor) throws CoreException;
-
/**
* Creates a new folder resource as a member of this handle's parent resource.
* <p>
@@ -122,7 +74,7 @@
* @see IVirtualResourceRuleFactory#createRule(IVirtualResource)
* @since 2.0
*/
- public void create(int updateFlags, boolean local, IProgressMonitor monitor) throws CoreException;
+ public void create(int updateFlags, IProgressMonitor monitor) throws CoreException;
/**
* Creates a new folder resource as a member of this handle's parent resource.
@@ -191,46 +143,6 @@
public void createLink(IPath localLocation, int updateFlags, IProgressMonitor monitor) throws CoreException;
/**
- * Deletes this resource from the workspace.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * delete((keepHistory ? KEEP_HISTORY : IVirtualResource.NONE) | (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this folder has been removed from its parent.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param force a flag controlling whether resources that are not
- * in sync with the local file system will be tolerated
- * @param keepHistory a flag controlling whether files under this folder
- * should be stored in the workspace's local history
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li> This resource could not be deleted for some reason.</li>
- * <li> This resource is out of sync with the local file system
- * and <code>force</code> is <code>false</code>.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- *
- * @see IVirtualResourceRuleFactory#deleteRule(IVirtualResource)
- * @see IVirtualResource#delete(int,IProgressMonitor)
- */
- public void delete(boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException;
-
- /**
* Returns a handle to the file with the given name in this folder.
* <p>
* This is a resource handle operation; neither the resource nor
@@ -262,53 +174,7 @@
*/
public IVirtualFolder getFolder(String name);
- /**
- * Moves this resource so that it is located at the given path.
- * <p>
- * This is a convenience method, fully equivalent to:
- * <pre>
- * move(destination, (keepHistory ? KEEP_HISTORY : IVirtualResource.NONE) | (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- * </p>
- * <p>
- * This method changes resources; these changes will be reported
- * in a subsequent resource change event, including an indication
- * that this folder has been removed from its parent and a new folder
- * has been added to the parent of the destination.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided
- * by the given progress monitor.
- * </p>
- *
- * @param destination the destination path
- * @param force a flag controlling whether resources that are not
- * in sync with the local file system will be tolerated
- * @param keepHistory a flag controlling whether files under this folder
- * should be stored in the workspace's local history
- * @param monitor a progress monitor, or <code>null</code> if progress
- * reporting is not desired
- * @exception CoreException if this resource could not be moved. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource or one of its descendents is not local.</li>
- * <li> The resource corresponding to the parent destination path does not exist.</li>
- * <li> The resource corresponding to the parent destination path is a closed
- * project.</li>
- * <li> A resource at destination path does exist.</li>
- * <li> A resource of a different type exists at the destination path.</li>
- * <li> This resource or one of its descendents is out of sync with the local file system
- * and <code>force</code> is <code>false</code>.</li>
- * <li> The workspace and the local file system are out of sync
- * at the destination resource or one of its descendents.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException if the operation is canceled.
- * Cancelation can occur even if no progress monitor is provided.
- *
- * @see IVirtualResourceRuleFactory#moveRule(IVirtualResource, IVirtualResource)
- * @see IVirtualResource#move(IPath,int,IProgressMonitor)
- */
- public void move(IPath destination, boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException;
+ public IFolder getRealFolder();
+
+ public IFolder[] getRealFolders();
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualResource.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualResource.java
index f0a98c8..ede7775 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualResource.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/modulecore/resources/IVirtualResource.java
@@ -43,15 +43,7 @@
* @see IVirtualResource#getType()
* @see IVirtualFolder
*/
- public static final int FOLDER = 0x2;
-
- /**
- * Type constant (bit mask value 4) which identifies project resources.
- *
- * @see IVirtualResource#getType()
- * @see IProject
- */
- public static final int PROJECT = 0x4;
+ public static final int FOLDER = 0x2;
/**
* Type constant (bit mask value 8) which identifies the root resource.
@@ -178,6 +170,8 @@
* @since 3.1
*/
public static final int BACKGROUND_REFRESH = 0x80;
+
+ public static final int DELETE_METAMODEL_ONLY = 0x10000;
/*
* ==================================================================== Other constants:
@@ -386,214 +380,8 @@
* @see IResourceVisitor#visit(IVirtualResource)
* @since 2.0
*/
- public void accept(IResourceVisitor visitor, int depth, int memberFlags) throws CoreException;
-
- /**
- * Makes a copy of this resource at the given path.
- * <p>
- * This is a convenience method, fully equivalent to:
- *
- * <pre>
- * copy(destination, (force ? FORCE : IVirtualResource.NONE), monitor);
- * </pre>
- *
- * </p>
- * <p>
- * This operation changes resources; these changes will be reported in a subsequent resource
- * change event that will include an indication that the resource copy has been added to its new
- * parent.
- * </p>
- * <p>
- * This operation is long-running; progress and cancellation are provided by the given progress
- * monitor.
- * </p>
- *
- * @param destination
- * the destination path
- * @param force
- * a flag controlling whether resources that are not in sync with the local file
- * system will be tolerated
- * @param monitor
- * a progress monitor, or <code>null</code> if progress reporting is not desired
- * @exception CoreException
- * if this resource could not be copied. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource or one of its descendents is not local.</li>
- * <li> The source or destination is the workspace root.</li>
- * <li> The source is a project but the destination is not.</li>
- * <li> The destination is a project but the source is not.</li>
- * <li> The resource corresponding to the parent destination path does not exist.</li>
- * <li> The resource corresponding to the parent destination path is a closed
- * project.</li>
- * <li> A resource at destination path does exist.</li>
- * <li> This resource or one of its descendents is out of sync with the local
- * file system and <code>force</code> is <code>false</code>.</li>
- * <li> The workspace and the local file system are out of sync at the
- * destination resource or one of its descendents.</li>
- * <li> The source resource is a file and the destination path specifies a
- * project.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException
- * if the operation is canceled. Cancelation can occur even if no progress
- * monitor is provided.
- */
- public void copy(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Makes a copy of this resource at the given path. The resource's descendents are copied as
- * well. The path of this resource must not be a prefix of the destination path. The workspace
- * root may not be the source or destination location of a copy operation, and a project can
- * only be copied to another project. After successful completion, corresponding new resources
- * will exist at the given path; their contents and properties will be copies of the originals.
- * The original resources are not affected.
- * <p>
- * The supplied path may be absolute or relative. Absolute paths fully specify the new location
- * for the resource, including its project. Relative paths are considered to be relative to the
- * container of the resource being copied. A trailing separator is ignored.
- * </p>
- * <p>
- * Calling this method with a one segment absolute destination path is equivalent to calling:
- *
- * <pre>
- * copy(workspace.newProjectDescription(folder.getName()), updateFlags, monitor);
- * </pre>
- *
- * </p>
- * <p>
- * When a resource is copied, its persistent properties are copied with it. Session properties
- * and markers are not copied.
- * </p>
- * <p>
- * The <code>FORCE</code> update flag controls how this method deals with cases where the
- * workspace is not completely in sync with the local file system. If <code>FORCE</code> is
- * not specified, the method will only attempt to copy resources that are in sync with the
- * corresponding files and directories in the local file system; it will fail if it encounters a
- * resource that is out of sync with the file system. However, if <code>FORCE</code> is
- * specified, the method copies all corresponding files and directories from the local file
- * system, including ones that have been recently updated or created. Note that in both settings
- * of the <code>FORCE</code> flag, the operation fails if the newly created resources in the
- * workspace would be out of sync with the local file system; this ensures files in the file
- * system cannot be accidentally overwritten.
- * </p>
- * <p>
- * The <code>SHALLOW</code> update flag controls how this method deals with linked resources.
- * If <code>SHALLOW</code> is not specified, then the underlying contents of the linked
- * resource will always be copied in the file system. In this case, the destination of the copy
- * will never be a linked resource or contain any linked resources. If <code>SHALLOW</code> is
- * specified when a linked resource is copied into another project, a new linked resource is
- * created in the destination project that points to the same file system location. When a
- * project containing linked resources is copied, the new project will contain the same linked
- * resources pointing to the same file system locations. For both of these shallow cases, no
- * files on disk under the linked resource are actually copied. With the <code>SHALLOW</code>
- * flag, copying of linked resources into anything other than a project is not permitted. The
- * <code>SHALLOW</code> update flag is ignored when copying non- linked resources.
- * </p>
- * <p>
- * Update flags other than <code>FORCE</code> and <code>SHALLOW</code> are ignored.
- * </p>
- * <p>
- * This operation changes resources; these changes will be reported in a subsequent resource
- * change event that will include an indication that the resource copy has been added to its new
- * parent.
- * </p>
- * <p>
- * An attempt will be made to copy the local history for this resource and its children, to the
- * destination. Since local history existence is a safety-net mechanism, failure of this action
- * will not result in automatic failure of the copy operation.
- * </p>
- * <p>
- * This operation is long-running; progress and cancellation are provided by the given progress
- * monitor.
- * </p>
- *
- * @param destination
- * the destination path
- * @param updateFlags
- * bit-wise or of update flag constants (<code>FORCE</code> and
- * <code>SHALLOW</code>)
- * @param monitor
- * a progress monitor, or <code>null</code> if progress reporting is not desired
- * @exception CoreException
- * if this resource could not be copied. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource or one of its descendents is not local.</li>
- * <li> The source or destination is the workspace root.</li>
- * <li> The source is a project but the destination is not.</li>
- * <li> The destination is a project but the source is not.</li>
- * <li> The resource corresponding to the parent destination path does not exist.</li>
- * <li> The resource corresponding to the parent destination path is a closed
- * project.</li>
- * <li> The source is a linked resource, but the destination is not a project,
- * and <code>SHALLOW</code> is specified.</li>
- * <li> A resource at destination path does exist.</li>
- * <li> This resource or one of its descendents is out of sync with the local
- * file system and <code>FORCE</code> is not specified.</li>
- * <li> The workspace and the local file system are out of sync at the
- * destination resource or one of its descendents.</li>
- * <li> The source resource is a file and the destination path specifies a
- * project.</li>
- * <li> The source is a linked resource, and the destination path does not
- * specify a project.</li>
- * <li> The location of the source resource on disk is the same or a prefix of
- * the location of the destination resource on disk.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException
- * if the operation is canceled. Cancelation can occur even if no progress
- * monitor is provided.
- * @see #FORCE
- * @see #SHALLOW
- * @see IVirtualResourceRuleFactory#copyRule(IVirtualResource, IVirtualResource)
- * @since 2.0
- */
- public void copy(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Deletes this resource from the workspace.
- * <p>
- * This is a convenience method, fully equivalent to:
- *
- * <pre>
- * delete(force ? FORCE : IVirtualResource.NONE, monitor);
- * </pre>
- *
- * </p>
- * <p>
- * This method changes resources; these changes will be reported in a subsequent resource change
- * event.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided by the given progress
- * monitor.
- * </p>
- *
- * @param force
- * a flag controlling whether resources that are not in sync with the local file
- * system will be tolerated
- * @param monitor
- * a progress monitor, or <code>null</code> if progress reporting is not desired
- * @exception CoreException
- * if this method fails. Reasons include:
- * <ul>
- * <li> This resource could not be deleted for some reason.</li>
- * <li> This resource or one of its descendents is out of sync with the local
- * file system and <code>force</code> is <code>false</code>.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException
- * if the operation is canceled. Cancelation can occur even if no progress
- * monitor is provided.
- *
- * @see IVirtualResource#delete(int,IProgressMonitor)
- */
- public void delete(boolean force, IProgressMonitor monitor) throws CoreException;
-
+ public void accept(IResourceVisitor visitor, int depth, int memberFlags) throws CoreException;
+
/**
* Deletes this resource from the workspace. Deletion applies recursively to all members of this
* resource in a "best- effort" fashion. That is, all resources which can be deleted are
@@ -848,9 +636,7 @@
*
* @return the project handle
*/
- public IProject getProject();
-
-
+ public IProject getProject();
/**
* Returns the type of this resource. The returned value will be one of <code>FILE</code>,
@@ -887,204 +673,5 @@
* @see IProject#isOpen()
*/
public boolean isAccessible();
-
- /**
- * Returns whether this resource is marked as read-only in the file system.
- *
- * @return <code>true</code> if this resource is read-only, <code>false</code> otherwise
- * @deprecated use <tt>IVirtualResource#getResourceAttributes()</tt>
- */
- public boolean isReadOnly();
-
- /**
- * Moves this resource so that it is located at the given path.
- * <p>
- * This is a convenience method, fully equivalent to:
- *
- * <pre>
- * move(destination, force ? FORCE : IVirtualResource.NONE, monitor);
- * </pre>
- *
- * </p>
- * <p>
- * This method changes resources; these changes will be reported in a subsequent resource change
- * event that will include an indication that the resource has been removed from its parent and
- * that a corresponding resource has been added to its new parent. Additional information
- * provided with resource delta shows that these additions and removals are related.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided by the given progress
- * monitor.
- * </p>
- *
- * @param destination
- * the destination path
- * @param force
- * a flag controlling whether resources that are not in sync with the local file
- * system will be tolerated
- * @param monitor
- * a progress monitor, or <code>null</code> if progress reporting is not desired
- * @exception CoreException
- * if this resource could not be moved. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource or one of its descendents is not local.</li>
- * <li> The source or destination is the workspace root.</li>
- * <li> The source is a project but the destination is not.</li>
- * <li> The destination is a project but the source is not.</li>
- * <li> The resource corresponding to the parent destination path does not exist.</li>
- * <li> The resource corresponding to the parent destination path is a closed
- * project.</li>
- * <li> A resource at destination path does exist.</li>
- * <li> A resource of a different type exists at the destination path.</li>
- * <li> This resource or one of its descendents is out of sync with the local
- * file system and <code>force</code> is <code>false</code>.</li>
- * <li> The workspace and the local file system are out of sync at the
- * destination resource or one of its descendents.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * <li> The source resource is a file and the destination path specifies a
- * project.</li>
- * </ul>
- * @exception OperationCanceledException
- * if the operation is canceled. Cancelation can occur even if no progress
- * monitor is provided.
- * @see IVirtualResourceDelta#getFlags()
- */
- public void move(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Moves this resource so that it is located at the given path. The path of the resource must
- * not be a prefix of the destination path. The workspace root may not be the source or
- * destination location of a move operation, and a project can only be moved to another project.
- * After successful completion, the resource and any direct or indirect members will no longer
- * exist; but corresponding new resources will now exist at the given path.
- * <p>
- * The supplied path may be absolute or relative. Absolute paths fully specify the new location
- * for the resource, including its project. Relative paths are considered to be relative to the
- * container of the resource being moved. A trailing slash is ignored.
- * </p>
- * <p>
- * Calling this method with a one segment absolute destination path is equivalent to calling:
- *
- * <pre>
- * IProjectDescription description = getDescription();
- * description.setName(path.lastSegment());
- * move(description, updateFlags, monitor);
- * </pre>
- *
- * </p>
- * <p>
- * When a resource moves, its session and persistent properties move with it. Likewise for all
- * other attributes of the resource including markers.
- * </p>
- * <p>
- * The <code>FORCE</code> update flag controls how this method deals with cases where the
- * workspace is not completely in sync with the local file system. If <code>FORCE</code> is
- * not specified, the method will only attempt to move resources that are in sync with the
- * corresponding files and directories in the local file system; it will fail if it encounters a
- * resource that is out of sync with the file system. However, if <code>FORCE</code> is
- * specified, the method moves all corresponding files and directories from the local file
- * system, including ones that have been recently updated or created. Note that in both settings
- * of the <code>FORCE</code> flag, the operation fails if the newly created resources in the
- * workspace would be out of sync with the local file system; this ensures files in the file
- * system cannot be accidentally overwritten.
- * </p>
- * <p>
- * The <code>KEEP_HISTORY</code> update flag controls whether or not file that are about to be
- * deleted from the local file system have their current contents saved in the workspace's local
- * history. The local history mechanism serves as a safety net to help the user recover from
- * mistakes that might otherwise result in data loss. Specifying <code>KEEP_HISTORY</code> is
- * recommended except in circumstances where past states of the files are of no conceivable
- * interest to the user. Note that local history is maintained with each individual project, and
- * gets discarded when a project is deleted from the workspace. Hence <code>KEEP_HISTORY</code>
- * is only really applicable when moving files and folders, but not whole projects.
- * </p>
- * <p>
- * If this resource is not a project, an attempt will be made to copy the local history for this
- * resource and its children, to the destination. Since local history existence is a safety-net
- * mechanism, failure of this action will not result in automatic failure of the move operation.
- * </p>
- * <p>
- * The <code>SHALLOW</code> update flag controls how this method deals with linked resources.
- * If <code>SHALLOW</code> is not specified, then the underlying contents of the linked
- * resource will always be moved in the file system. In this case, the destination of the move
- * will never be a linked resource or contain any linked resources. If <code>SHALLOW</code> is
- * specified when a linked resource is moved into another project, a new linked resource is
- * created in the destination project that points to the same file system location. When a
- * project containing linked resources is moved, the new project will contain the same linked
- * resources pointing to the same file system locations. For either of these cases, no files on
- * disk under the linked resource are actually moved. With the <code>SHALLOW</code> flag,
- * moving of linked resources into anything other than a project is not permitted. The
- * <code>SHALLOW</code> update flag is ignored when moving non- linked resources.
- * </p>
- * <p>
- * Update flags other than <code>FORCE</code>, <code>KEEP_HISTORY</code>and
- * <code>SHALLOW</code> are ignored.
- * </p>
- * <p>
- * This method changes resources; these changes will be reported in a subsequent resource change
- * event that will include an indication that the resource has been removed from its parent and
- * that a corresponding resource has been added to its new parent. Additional information
- * provided with resource delta shows that these additions and removals are related.
- * </p>
- * <p>
- * This method is long-running; progress and cancellation are provided by the given progress
- * monitor.
- * </p>
- *
- * @param destination
- * the destination path
- * @param updateFlags
- * bit-wise or of update flag constants (<code>FORCE</code>,
- * <code>KEEP_HISTORY</code> and <code>SHALLOW</code>)
- * @param monitor
- * a progress monitor, or <code>null</code> if progress reporting is not desired
- * @exception CoreException
- * if this resource could not be moved. Reasons include:
- * <ul>
- * <li> This resource does not exist.</li>
- * <li> This resource or one of its descendents is not local.</li>
- * <li> The source or destination is the workspace root.</li>
- * <li> The source is a project but the destination is not.</li>
- * <li> The destination is a project but the source is not.</li>
- * <li> The resource corresponding to the parent destination path does not exist.</li>
- * <li> The resource corresponding to the parent destination path is a closed
- * project.</li>
- * <li> The source is a linked resource, but the destination is not a project and
- * <code>SHALLOW</code> is specified.</li>
- * <li> A resource at destination path does exist.</li>
- * <li> A resource of a different type exists at the destination path.</li>
- * <li> This resource or one of its descendents is out of sync with the local
- * file system and <code>force</code> is <code>false</code>.</li>
- * <li> The workspace and the local file system are out of sync at the
- * destination resource or one of its descendents.</li>
- * <li> The source resource is a file and the destination path specifies a
- * project.</li>
- * <li> The location of the source resource on disk is the same or a prefix of
- * the location of the destination resource on disk.</li>
- * <li> Resource changes are disallowed during certain types of resource change
- * event notification. See <code>IVirtualResourceChangeEvent</code> for more details.</li>
- * </ul>
- * @exception OperationCanceledException
- * if the operation is canceled. Cancelation can occur even if no progress
- * monitor is provided.
- * @see IVirtualResourceDelta#getFlags()
- * @see #FORCE
- * @see #KEEP_HISTORY
- * @see #SHALLOW
- * @see IVirtualResourceRuleFactory#moveRule(IVirtualResource, IVirtualResource)
- * @since 2.0
- */
- public void move(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Sets or unsets this resource as read-only in the file system.
- *
- * @param readOnly
- * <code>true</code> to set it to read-only, <code>false</code> to unset
- * @deprecated use <tt>IVirtualResource#setResourceAttributes(ResourceAttributes)</tt>
- */
- public void setReadOnly(boolean readOnly);
}