jericho 2002/10/09 05:37:31 Modified: httpclient/src/java/org/apache/commons/httpclient/util URIUtil.java Log: - Add the getName and getQuery methods of an URI string - Make code robust Revision Changes Path 1.3 +45 -4 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/util/URIUtil.java Index: URIUtil.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/util/URIUtil.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- URIUtil.java 29 Sep 2002 09:02:36 -0000 1.2 +++ URIUtil.java 9 Oct 2002 12:37:31 -0000 1.3 @@ -84,12 +84,51 @@ // ---------------------------------------------------------- URI utilities /** + * Get the basename of an URI. + * + * @param uri a string regarded an URI + * @return the basename string + */ + public static String getName(String uri) { + if (uri == null || uri.length() == 0) return uri; + int at = uri.lastIndexOf("/"); + return uri.substring(at + 1); + } + + + /** + * Get the query of an URI. + * + * @param uri a string regarded an URI + * @return the query string + */ + public static String getQuery(String uri) { + if (uri == null || uri.length() == 0) return uri; + // consider of net_path + int at = uri.indexOf("//"); + int from = uri.indexOf("/", at >= 0 ? + (uri.lastIndexOf("/", at - 1) >= 0 ? 0 : at + 2) : 0); + // the authority part of URI ignored + int to = uri.length(); + // reuse the at and from variables to consider the query + at = uri.indexOf("?", from); + from = (at > from) ? at + 1 : -1; + // check the fragment + if (uri.lastIndexOf("#") > from) + to = uri.lastIndexOf("#"); + // get the path and query. + return (from >= 0) ? uri.substring(from, to) : "/"; + } + + + /** * Get the path of an URI. * * @param uri a string regarded an URI * @return the path string */ public static String getPath(String uri) { + if (uri == null || uri.length() == 0) return uri; // consider of net_path int at = uri.indexOf("//"); int from = uri.indexOf("/", at >= 0 ? @@ -115,6 +154,7 @@ * @return the path and query string */ public static String getPathQuery(String uri) { + if (uri == null || uri.length() == 0) return uri; // consider of net_path int at = uri.indexOf("//"); int from = uri.indexOf("/", at >= 0 ? @@ -137,6 +177,7 @@ * @return the string from the path part */ public static String getFromPath(String uri) { + if (uri == null || uri.length() == 0) return uri; // consider of net_path int at = uri.indexOf("//"); int from = uri.indexOf("/", at >= 0 ?
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>