每个资源都有将其唯一地标识到服务器的位置。Rational® CM API StpLocation 对象表示资源的位置,并用于为资源构造代理。StpLocation 对象由 Provider 从表示位置的字符串构造而成。指定该字符串表示中资源位置的语法由 StpLocation 的 Javadoc 信息中的 Rational CM API 定义。Provider.location(...)、StpProvider.stpLocation(...) 和 StpPovider.buildProxy(...) 操作的字符串参数必须符合 StpLocation 中指定的语法。CM API 位置字符串语法是 ClearCase® 对象选择器语法的扩展。
例如,客户机上资源文件或目录的位置字符串是文件路径名。在以下代码段中使用此格式可检出名为 sample_file.txt 的文件。
// Given a CcProvider object, m_provider, which must first be instantiated, // create a Location object from a unique file pathname. // Use "C:\\sample_view\\sample_dir\\sample_file.txt" on Windows, // or "/sample_view/sample_dir/sample_file.txt" on UNIX. StpLocation fileLoc = m_provider.stpLocation("C:\\sample_view\\sample_dir\\sample_file.txt"); // Create the ControllableResource proxy for the client - a versioned file // is a ControllableResource CcControllableResource my_ctresource = m_provider.ccControllableResource(fileLoc); // Use the proxy to work with the controllable resource. // For example, check out the file: my_ctresource.doCheckout();
如本例中所示,provider.stpLocation() 方法返回对应于位置规范的 StpLocation 对象。StpLocation 对象(fileLoc)随后将传递到 Provider.ccControllableResource() 以在此位置上构造资源的代理。
StpLocation activityLoc = provider.stpLocation("cc.activity:my_fix_a_bug@/vobs/projects"); CcActivity act = provider.ccProvider().ccActivity(activityLoc);
StpLocation loc = provider.stpLocation("cq.record:Defect/SAMPL00000234@2003.06.00/SAMPL"); CqRecord record = provider.cqProvider().cqRecord(loc);
StpLocation 接口还提供了其他方法以解析和组成包含位置规范的字符串。
StpLocation 对象可从每个代理获取,而代理对应于由该代理引用的对象位置。同时对 StpLocation 进行了扩展以提供生成 StpLocation 对象的 Provider。有关 StpLocation 对象和位置规范语法的更多信息,请参阅位置语法。有关使用位置字符串和设置属性的更多示例,请参阅写属性。