< prev index next >
src/java.base/share/classes/java/net/URLStreamHandler.java
Print this page
8193034: Optimize URL.toExternalForm
Reviewed-by: chegar, alanb, clanger
*** 478,520 ****
*
* @param u the URL.
* @return a string representation of the {@code URL} argument.
*/
protected String toExternalForm(URL u) {
!
! // pre-compute length of StringBuffer
! int len = u.getProtocol().length() + 1;
! if (u.getAuthority() != null && u.getAuthority().length() > 0)
! len += 2 + u.getAuthority().length();
! if (u.getPath() != null) {
! len += u.getPath().length();
! }
! if (u.getQuery() != null) {
! len += 1 + u.getQuery().length();
! }
! if (u.getRef() != null)
! len += 1 + u.getRef().length();
!
! StringBuilder result = new StringBuilder(len);
! result.append(u.getProtocol());
! result.append(":");
! if (u.getAuthority() != null && u.getAuthority().length() > 0) {
! result.append("//");
! result.append(u.getAuthority());
! }
! if (u.getPath() != null) {
! result.append(u.getPath());
! }
! if (u.getQuery() != null) {
! result.append('?');
! result.append(u.getQuery());
! }
! if (u.getRef() != null) {
! result.append("#");
! result.append(u.getRef());
! }
! return result.toString();
}
/**
* Sets the fields of the {@code URL} argument to the indicated values.
* Only classes derived from URLStreamHandler are able
--- 478,495 ----
*
* @param u the URL.
* @return a string representation of the {@code URL} argument.
*/
protected String toExternalForm(URL u) {
! String s;
! return u.getProtocol()
! + ':'
! + (((s = u.getAuthority()) != null && s.length() > 0)
! ? "//" + s : "")
! + (((s = u.getPath()) != null) ? s : "")
! + (((s = u.getQuery()) != null) ? '?' + s : "")
! + (((s = u.getRef()) != null) ? '#' + s : "");
}
/**
* Sets the fields of the {@code URL} argument to the indicated values.
* Only classes derived from URLStreamHandler are able
< prev index next >