Uri(UriBuilder builder) { scheme = builder.getScheme(); authority = builder.getAuthority(); path = builder.getPath(); query = builder.getQuery(); fragment = builder.getFragment(); queryParameters = Collections.unmodifiableMap(Maps.newLinkedHashMap(builder.getQueryParameters())); StringBuilder out = new StringBuilder(); if (scheme != null) { out.append(scheme).append(':'); } if (authority != null) { out.append("//").append(authority); // insure that there's a separator between authority/path if (path != null && path.length() > 1 && !path.startsWith("/")) { out.append("/"); } } if (path != null) { out.append(path); } if (query != null) { out.append('?').append(query); } if (fragment != null) { out.append('#').append(fragment); } text = out.toString(); }