`
tedeyang
  • 浏览: 318306 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

遇到JDK的bug(6226081) URI.relative()

阅读更多



在 URI类中有个relative方法可以用来将uri相对化。今天开发时发现了问题,它返回的相对链接并不是我想象的那种结果——不具有正确的层次关系.


QUOTE:

relativize

public URI
 relativize
(URI
 uri)
根据此 URI 将给定 URI 相对化。

根据此 URI 将给定的 URI 相对化按以下方式计算:

  1. 如果此 URI 或给定 URI 是不透明的,或者如果两个 URI 的方案和授权组成部分不相同,或者如果此 URI 的路径不是给定 URI 的路径前缀,则返回给定的 URI。

  2. 否则,使用从给定 URI 获取的查询和片段组成部分,以及通过把此 URI 的路径从给定 URL 的路径开头处移除而得到的路径组成部分,构造新的相对分层 URL。

 

参数:
uri - 要根据此 URI 进行相对化的 URI
返回:
得到的 URI
抛出:
NullPointerException - 如果 uri 为 null

在官网找到了这个buglist http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6226081 ,症状在这个bug里描述得很清楚,我就不多说了.

我的测试用例如下:


QUOTE:
package cn.tohot.webdown;

import java.net.URI;

import junit.framework.TestCase;

public class LinkReplaceTest extends TestCase {
 public void testLink() throws Exception {
  URI i = new URI("http://localhost:8080/abc ");
  URI i2 = new URI("http://localhost:8080/manager ");
  assertEquals("manager", i.relativize(i2).toString());
  
   i = new URI("/abc/");
   i2 = new URI("/manager");
  assertEquals("../manager", i.relativize(i2));
  
  assertEquals(true, i.resolve(i.relativize(i2)).equals(i2));
 }
}

2005年的bug,还没有解决掉,唉.!!!!!只好自己写一个了.

 

【2008-7】

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics