Restlet:为什么链接ClientResource.getChild()会产生兄弟姐妹而不是嵌套资源?

时间:2015-02-13 04:19:44

标签: restlet restlet-2.0

以下示例尝试使用两种不同的方法为嵌套资源执行路径组合。第一个使用ClientResource.getChild(),第二个使用原始ClientResource的引用创建一个新的Reference,然后在为该路径构造新的ClientResource之前添加两个段。

public static void main( String [] args ) {
    // I would expect that this:
    ClientResource res1 = new ClientResource( "http://localhost" );
    ClientResource res2 = res1.getChild( "foo" );
    ClientResource res3 = res2.getChild( "bar" );

    System.out.printf( "res3 points to %s\n", res3.getReference().getTargetRef().toString() );

    // Would be the same as this:
    Reference ref = new Reference( res1.getReference() );
    ref.addSegment( "foo" ).addSegment( "bar" );

    ClientResource res4 = new ClientResource( ref );

    System.out.printf( "res4 points to %s\n", res4.getReference().getTargetRef().toString() );
}

这是输出:

res3 points to http://localhost/bar
res4 points to http://localhost/foo/bar

有趣的是,如果我在创建res2(res1.getChild( "foo/" );)时包含/,我会得到我期望的结果。但是,如果我第一次派生资源foo,后来想要派生它的子资源栏,这对我没有帮助。

这是一个错误,还是有这个行为的目的?

注意:我正在使用Restlet 2.3.0

编辑:这对我来说非常令人沮丧,因为getChild的出现是我选择Restlet而不是泽西岛的原因之一。在这个明显的bug和Restlet暗示的资源路径约定之间,我相信我将在未来的项目中使用Jersey。

0 个答案:

没有答案