001    /*
002    * file CcResource.java
003    *
004    * Licensed Materials - Property of IBM
005    * Restricted Materials of IBM
006    * 
007    * com.ibm.rational.wvcm.stp.cc.CcResource
008    *
009    * (C) Copyright IBM Corporation 2004, 2008.  All Rights Reserved. 
010    * Note to U.S. Government Users Restricted Rights:  Use, duplication or  
011    * disclosure restricted by GSA ADP  Schedule Contract with IBM Corp. 
012    */
013    
014    
015    package com.ibm.rational.wvcm.stp.cc;
016    
017    import javax.wvcm.WvcmException;
018    
019    import com.ibm.rational.wvcm.stp.StpResource;
020    
021    /**
022     * <p>A proxy for a resource in a ClearCase VOB or view.
023     * </p>
024     */
025    public interface CcResource extends StpResource {
026    
027        /**
028         * Construct a new proxy for this resource. 
029         * This new proxy will be of the most correct, most derived class for this
030         * resource, based on currently available information in the resource's
031         * location, on the local client machine, and/or on the ClearCase server.
032         * In addition, this new proxy will have its RESOURCE_IDENTIFIER property
033         * correctly set so that its equals() and hashMap() methods will work
034         * correctly.
035         * <p>Unresolved resource proxies should not be used in situations where
036         * equality matters, especially in maps, lists, sets, and other collection
037         * classes.
038         * </p>
039         * @see com.ibm.rational.wvcm.stp.StpResource#equals(Object)
040         * @return a new proxy of the correct, most specific resource type
041         */
042        public CcResource doResolve() throws WvcmException;
043    
044        /**
045         * Has this proxy already been resolved?
046         * @return true if this proxy has been resolved; else false
047         * @see #doResolve()
048         */
049        public boolean isResolved() throws WvcmException;
050        
051        /**
052         * Fetches an instance of a ClearCase provider which can be used for
053         * or instantiating proxies for various ClearCase-specific resources.
054         * @return An instance of a ClearCase provider
055         */
056        CcProvider ccProvider();
057    }