001 /* 002 * file CcComponent.java 003 * 004 * Licensed Materials - Property of IBM 005 * Restricted Materials of IBM 006 * 007 * com.ibm.rational.wvcm.stp.cc.CcComponent 008 * 009 * (C) Copyright IBM Corporation 2004, 2015. 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 package com.ibm.rational.wvcm.stp.cc; 015 016 import static com.ibm.rational.wvcm.stpex.StpExBase.PROPERTY_NAMESPACE; 017 018 import javax.wvcm.Component; 019 import javax.wvcm.Feedback; 020 import javax.wvcm.PropertyNameList.PropertyName; 021 import javax.wvcm.ResourceList; 022 import javax.wvcm.WvcmException; 023 024 /** 025 * A proxy for a ClearCase UCM component. 026 * <p> 027 * A UCM component defines the set of files that will be captured in a baseline 028 * of that component. A baseline is a version of a component, and records a 029 * version of each element selected by the stream's configuration. 030 * </p> 031 * <p> 032 * A <i>rootless</i> component has no root directory element. Rootless 033 * components are typically used to aggregate other components. Baselines of 034 * rootless components contain other baselines, rather than file versions. 035 * </p> 036 * <p> 037 * NOTE: Not all WVCM properties and operations are supported in this release of 038 * CM API. For a list of properties currently supported by a particular resource 039 * type, use doGetPropertyNameList() on an instance of that type: 040 * </p> 041 * 042 * <pre> 043 * PropertyRequest supportedProps = myResource.doGetPropertyNameList(); 044 * </pre> 045 */ 046 public interface CcComponent extends Component, CcVobResource 047 { 048 /** 049 * <p>Create a new UCM component at the location identified by this proxy. The 050 * location should be an object name selector specifying the component's name 051 * and the repository (project VOB) in which to create it. 052 * </p> 053 * <p>Set the {@link #ROOT_DIRECTORY_ELEMENT} property to specify the new component's 054 * root. If component's root is a directory beneath the VOB, then {@link #VIEW} 055 * property must also be set. 056 * If no root directory element is set, a rootless component is created. 057 * </p> 058 * <p>This method fails if the root directory element is not a legal choice for 059 * a component root. 060 * </p> 061 */ 062 public CcComponent doCreateCcComponent(Feedback feedback) throws WvcmException; 063 064 /** 065 * Does this component have a root directory element? Or is it "rootless"? 066 */ 067 PropertyName<Boolean> HAS_ROOT_DIRECTORY_ELEMENT = 068 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "has-root-directory-element"); 069 070 /** 071 * Get the {@link #HAS_ROOT_DIRECTORY_ELEMENT} property of this component. 072 * @return true if this component has a root directory element; 073 * false if this is a rootless component. 074 * @throws WvcmException if this proxy doesn't define a value for this property. 075 */ 076 boolean getHasRootDirectoryElement() throws WvcmException; 077 078 /** 079 * This component's initial baseline. A component's initial 080 * baseline contains exactly one version - the /main/0 version of the 081 * component's root directory element. 082 */ 083 PropertyName<CcBaseline> INITIAL_BASELINE = 084 new PropertyName<CcBaseline>(PROPERTY_NAMESPACE, "initial-baseline"); 085 086 /** 087 * Get the the {@link #INITIAL_BASELINE} property of this component. 088 * @return A proxy for this component's initial baseline 089 * @throws WvcmException if this proxy doesn't define a value for this property. 090 */ 091 CcBaseline getInitialBaseline() throws WvcmException; 092 093 /** 094 * This component's root directory element - the directory element in the 095 * VOB that defines the scope of files that are captured in this component's 096 * baselines. 097 */ 098 PropertyName<CcElement> ROOT_DIRECTORY_ELEMENT = 099 new PropertyName<CcElement>(PROPERTY_NAMESPACE, "root-directory-element"); 100 101 /** 102 * Get the {@link #ROOT_DIRECTORY_ELEMENT} property of this component. 103 * @return A proxy for this component's root directory element, or null if this is a 104 * rootless component. 105 * @throws WvcmException if this proxy doesn't define a value for this property. 106 */ 107 CcElement getRootDirectoryElement() throws WvcmException; 108 109 /** 110 * Set the value of this component's {@link #ROOT_DIRECTORY_ELEMENT} property. 111 * This property can only be set at component creation time. 112 * 113 * @param root A proxy for this component's root directory element 114 */ 115 void setRootDirectoryElement(CcElement root); 116 117 /** 118 * This component's full closure of baselines. 119 */ 120 PropertyName<ResourceList<CcBaseline>> BASELINE_LIST_CLOSURE = 121 new PropertyName<ResourceList<CcBaseline>>(PROPERTY_NAMESPACE, "baseline-list-closure"); 122 123 /** 124 * Get the value of the this proxy's {@link #BASELINE_LIST_CLOSURE} property 125 * @return a list of client proxies for this component's baselines 126 * @throws WvcmException if this proxy doesn't define a value for this property. 127 */ 128 ResourceList<CcBaseline> getBaselineListClosure() throws WvcmException; 129 130 /** 131 * A <em>write-only</em> property used to specify the view context 132 * to be used for the component creation, whose root directory element 133 * is a directory one level beneath the VOB. 134 */ 135 PropertyName<CcView> VIEW = 136 new PropertyName<CcView>(PROPERTY_NAMESPACE, "view"); 137 138 /** 139 * Set the value of this proxy's {@link #VIEW} property. This property 140 * can only be set at component creation time to be used by 141 * {@link #doCreateCcComponent(Feedback)} method. 142 * @param view view context to be used for component creation. 143 * @throws WvcmException 144 */ 145 public void setView(CcView view) throws WvcmException; 146 }