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 */
011package javax.wvcm;
012
013import 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 */
034public 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}