001/*
002 * file ControllableSymbolicLink.java
003 *
004 * Licensed Materials - Property of IBM
005 * Restricted Materials of IBM
006 * 
007 * (c) Copyright IBM Corporation 2007, 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 symbolic link resource.
017 * The content of a symbolic link is the content of the resource to which its
018 * {@link #LINK_TARGET} property refers.
019 * The members of a symbolic link are the members of the resource to which its
020 * {@link #LINK_TARGET} property refers.
021 * 
022 * A controllable symbolic link resource is a symbolic link that can be placed under control.
023 * When a symbolic link is placed under version control, a version of that symbolic link
024 * captures the link-pathname value of that symbolic link.
025 * 
026 * @since 1.1
027 */
028public interface ControllableSymbolicLink extends ControllableFolder {
029    
030    /**
031     * A pathname that identifies the resource to which the symbolic link refers.
032     * @see #setLinkTarget
033     * @see #getLinkTarget
034     */
035    public static final PropertyName<Location> LINK_TARGET =
036        new PropertyName<Location>("link-target"); //$NON-NLS-1$
037
038    /**
039     * Get the {@link #LINK_TARGET} property.
040     * 
041     * @return the {@link #LINK_TARGET} property.
042     * @throws WvcmException if this property was not set and
043     * this ControllableSymbolicLink was not created with
044     * {@link #LINK_TARGET} as a wanted property.
045     * @see #setLinkTarget
046     */
047    public Location getLinkTarget() throws WvcmException;
048
049    /**
050     * Set the {@link #LINK_TARGET} property.
051     * 
052     * @param linkTarget the new pathname
053     * value for the {@link #LINK_TARGET} property.
054     * @see #getLinkTarget
055     */
056    public void setLinkTarget(Location linkTarget);
057
058}