每个 Resource 都有一个位置,该位置在特定时间点唯一地标识资源。 对于基于文件的资源,该位置表示为文件路径名称。对于服务器端资源,该位置包含查找对象(例如 VOB 中的数据库标识)所需的信息。
当在服务器上读取或写入资源内容或者当读取或写入属性时,必需提供资源的位置。
StpLocation 对象表示资源地址;同样地,它可以用于构造资源代理(通过使用提供程序的某个资源代理工厂方法)。通常,从 Location 构造的资源代理的类型必须与由通过 Location 寻址的资源的类型相同。但是,无法始终从地址规范确定按 Location 寻址的资源类型。因此,该规则无法始终在构造代理时实施。
所有资源都具有稳定的位置格式,这些位置格式可用于在客户机会话之间的时间间隙内将资源标识存储在客户机上。该稳定位置可能不是用于创建资源的位置。服务器在创建资源时为用户创建该稳定位置;该位置始终可用作资源的固定属性。StpLocation 对象提供了获取位置字符串表示的方法,并提供了将字符串解析为位置的方法。
StpLocation 实例表示已解析为组件字段的位置规范。大量不同格式或模式用于将各种资源位置表示为字符串。这些模式由以下一个或多个字段构成:域、存储库名称、名称空间和对象名称。名称空间字段确定要使用哪种模式。
StpLocation 接口提供了一种用于将位置规范解析为其组成部分的方法。通过可用的方法,Rational® CM API 客户机可检查用户提供的位置规范以确定这些规范是否适用于将使用它们的上下文。基于该分析,如果上下文明确地表示位置规范中有被用户省略的部分,那么客户机可以提供这些缺少的部分。
StpProvider.stpLocation() 方法通过在 Namespace 参数中填入缺少的位置字符串模式,并从客户机标识到提供程序的缺省存储库填入缺少的存储库而使该过程更易于执行。(请参阅 Javadoc 信息中的 StpProvider.setDefaultRepository 方法。)
<domain>.<namespace>:<object-name>@<repository-name>在以下示例中,缺省域隐含:
"stream:mystream@projects"
StpProvider 接口包含了通过 userFriendlySelector 和 stableSelector 方法按照诸如 USER_FRIENDLY_LOCATION 和 STABLE_LOCATION 的格式构建 StpLocation 的方法。StpResource 接口包含 getStableLocation 和 getUserFriendlyLocation 方法,这两种方法返回代理定义的 STABLE_LOCATION 和 USER_FRIENDLY_LOCATION 属性的值。如果客户机需要特定格式的位置,那么它应请求与该格式对应的资源属性,且不使用 StpLocation.stpLocation()。