001    /*
002     * file Configuration.java
003     *
004     * Licensed Materials - Property of IBM
005     * Restricted Materials of IBM
006     * 
007     * (c) Copyright IBM Corporation 2004, 2008.  All Rights Reserved. 
008     * Note to U.S. Government Users Restricted Rights:  Use, duplication or  
009     * disclosure restricted by GSA ADP  Schedule Contract with IBM Corp. 
010     */
011    package javax.wvcm;
012    
013    import javax.wvcm.PropertyNameList.PropertyName;
014    
015    /**
016     * A proxy for a configuration resource.
017     *
018     * A configuration resource is a controlled resource that is associated with a folder
019     * (called the "root folder") and that represents all controlled members
020     * of the root folder.
021     * <p>
022     * A configuration is associated with a
023     * baseline-controlled folder, and is used to create and access
024     * baselines of that folder.
025     * <p>
026     * When a folder is both version-controlled and baseline-controlled,
027     * a client can create a new version of the folder by
028     * checking out and checking in that folder,
029     * and it can create a new baseline of that folder by checking out
030     * and checking in the configuration of that folder.
031     * 
032     * @since 1.0
033     */
034    public interface Configuration extends ControllableResource {
035    
036        /**
037         * The root folder for this configuration. 
038         * The {@link ControllableFolder#ROOT_FOLDER_OF} property of the root folder of
039         * a configuration MUST identify that configuration.
040         * The root {@link ControllableResource#CONFIGURATION} property of a member
041         * of the root folder of a configuration must all identify that configuration.
042         */
043        public static final PropertyName<ControllableFolder> ROOT_FOLDER =
044            new PropertyName<ControllableFolder>("root-folder"); //$NON-NLS-1$
045    
046        /**
047         * Get the {@link #ROOT_FOLDER} property.
048         * 
049         * @return the {@link #ROOT_FOLDER} property.
050         * @throws WvcmException if this Configuration was not created with
051         * {@link #ROOT_FOLDER} as a wanted property.
052         */
053        public ControllableFolder getRootFolder() throws WvcmException;
054    
055    }