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, 2011.  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.PropertyRequestItem;
018    import javax.wvcm.WvcmException;
019    
020    import com.ibm.rational.wvcm.stp.StpResource;
021    
022    /**
023     * <p>A proxy for a resource in a ClearCase VOB or view.
024     * </p>
025     */
026    public interface CcResource extends StpResource {
027    
028        /**
029         * Construct a new proxy for this resource. 
030         * This new proxy will be of the most correct, most derived class for this
031         * resource, based on currently available information in the resource's
032         * location, on the local client machine, and/or on the ClearCase server.
033         * In addition, this new proxy will have its identity
034         * correctly set so that its equals() and hashMap() methods will work
035         * correctly.
036         * <p>Unresolved resource proxies should not be used in situations where
037         * equality matters, especially in maps, lists, sets, and other collection
038         * classes.
039         * </p>
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         * Get the ClearCase provider associated with this resource proxy.
053         * This is normally the network provider for the CCRC WAN server on which
054         * this remote resource resides, or a local provider if this is a local
055         * ClearCase resource.
056         */
057        CcProvider ccProvider();
058    
059        /**
060         * Checks if this proxy contains valid values for the provided properties, if
061         * and only if, they are supported.  Properties which are unsupported by the 
062         * server are ignored.
063         * 
064         * @param wantedProp A PropertyRequestItem, possibly with multiple nested
065         *            properties, to check the value for. Cannot be
066         *            <code>null</code>.
067         * 
068         * @return <code>true</code> if there is an entry in this proxy for all
069         *         server supported properties of the PropertyRequestItem, 
070         *         and those entries contain a valid value; <code>false</code> otherwise.
071         */
072        public boolean hasSupportedProperties(PropertyRequestItem wantedProp);
073    }