| /******************************************************************************* |
| * Copyright (c) 2000, 2009 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.core.resources; |
| |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.QualifiedName; |
| |
| /** |
| * A lightweight interface for requesting information about a resource. |
| * All of the "get" methods on a resource proxy have trivial performance cost. |
| * Requesting the full path or the actual resource handle will cause extra objects |
| * to be created and will thus have greater cost. |
| * <p> |
| * When a resource proxy is used within an {@link IResourceProxyVisitor}, |
| * it is a transient object that is only valid for the duration of a single visit method. |
| * A proxy should not be referenced once the single resource visit is complete. |
| * The equals and hashCode methods should not be relied on. |
| * </p> |
| * <p> |
| * A proxy can also be created using {@link IResource#createProxy()}. In |
| * this case the proxy is valid indefinitely, but will not remain in sync with |
| * the state of the corresponding resource. |
| * </p> |
| * |
| * @see IResourceProxyVisitor |
| * @since 2.1 |
| * @noimplement This interface is not intended to be implemented by clients. |
| * @noextend This interface is not intended to be extended by clients. |
| */ |
| public interface IResourceProxy { |
| /** |
| * Returns the modification stamp of the resource being visited. |
| * |
| * @return the modification stamp, or <code>NULL_STAMP</code> if the |
| * resource either does not exist or exists as a closed project |
| * @see IResource#getModificationStamp() |
| */ |
| public long getModificationStamp(); |
| |
| /** |
| * Returns whether the resource being visited is accessible. |
| * |
| * @return <code>true</code> if the resource is accessible, and |
| * <code>false</code> otherwise |
| * @see IResource#isAccessible() |
| */ |
| public boolean isAccessible(); |
| |
| /** |
| * Returns whether the resource being visited is derived. |
| * |
| * @return <code>true</code> if the resource is marked as derived, and |
| * <code>false</code> otherwise |
| * @see IResource#isDerived() |
| */ |
| public boolean isDerived(); |
| |
| /** |
| * Returns whether the resource being visited is a linked resource. |
| * |
| * @return <code>true</code> if the resource is linked, and |
| * <code>false</code> otherwise |
| * @see IResource#isLinked() |
| */ |
| public boolean isLinked(); |
| |
| /** |
| * Returns whether the resource being visited is a phantom resource. |
| * |
| * @return <code>true</code> if the resource is a phantom resource, and |
| * <code>false</code> otherwise |
| * @see IResource#isPhantom() |
| */ |
| public boolean isPhantom(); |
| |
| /** |
| * Returns whether the resource being visited is a hidden resource. |
| * |
| * @return <code>true</code> if the resource is a hidden resource, and |
| * <code>false</code> otherwise |
| * @see IResource#isHidden() |
| * |
| * @since 3.4 |
| */ |
| public boolean isHidden(); |
| |
| /** |
| * Returns whether the resource being visited is a team private member. |
| * |
| * @return <code>true</code> if the resource is a team private member, and |
| * <code>false</code> otherwise |
| * @see IResource#isTeamPrivateMember() |
| */ |
| public boolean isTeamPrivateMember(); |
| |
| /** |
| * Returns the simple name of the resource being visited. |
| * |
| * @return the name of the resource |
| * @see IResource#getName() |
| */ |
| public String getName(); |
| |
| /** |
| * Returns the value of the session property of the resource being |
| * visited, identified by the given key. Returns <code>null</code> if this |
| * resource has no such property. |
| * <p> |
| * Note that this method can return an out of date property value, or a |
| * value that no longer exists, if session properties are being modified |
| * concurrently with the resource visit. |
| * </p> |
| * |
| * @param key the qualified name of the property |
| * @return the string value of the session property, |
| * or <code>null</code> if the resource has no such property |
| * @see IResource#getSessionProperty(QualifiedName) |
| */ |
| public Object getSessionProperty(QualifiedName key); |
| |
| /** |
| * Returns the type of the resource being visited. |
| * |
| * @return the resource type |
| * @see IResource#getType() |
| */ |
| public int getType(); |
| |
| /** |
| * Returns the full workspace path of the resource being visited. |
| * <p> |
| * Note that this is not a "free" proxy operation. This method |
| * will generally cause a path object to be created. For an optimal |
| * visitor, only call this method when absolutely necessary. Note that the |
| * simple resource name can be obtained from the proxy with no cost. |
| * </p> |
| * @return the full path of the resource |
| * @see IResource#getFullPath() |
| */ |
| public IPath requestFullPath(); |
| |
| /** |
| * Returns the handle of the resource being visited. |
| * <p> |
| * Note that this is not a "free" proxy operation. This method will |
| * generally cause both a path object and a resource object to be created. |
| * For an optimal visitor, only call this method when absolutely necessary. |
| * Note that the simple resource name can be obtained from the proxy with no |
| * cost, and the full path of the resource can be obtained through the proxy |
| * with smaller cost. |
| * </p> |
| * @return the resource handle |
| */ |
| public IResource requestResource(); |
| } |