@Test public void addTwoQueryParameters() { URIBuilder builder = new URIBuilder() .setScheme("http") .setHost("apache.org") .setPath("/shindig") .addParameter("hello", "world") .addParameter("foo", "bar") .setFragment("foo"); assertEquals("http://apache.org/shindig?hello=world&foo=bar#foo", builder.toString()); }
/** * Gets entity id as parameter. * * @param service the service * @return the entity id as parameter */ protected static Optional<URIBuilder.BasicNameValuePair> getEntityIdAsParameter(final Service service) { val builder = new URIBuilder(service.getId()); return builder.getQueryParams() .stream() .filter(p -> p.getName().equals(SamlProtocolConstants.PARAMETER_ENTITY_ID)) .findFirst(); }
@Override protected Event doExecute(final RequestContext requestContext) throws Exception { final Service svc = WebUtils.getService(requestContext); final URIBuilder builder = new URIBuilder(svc.getId()); final URI uri = builder.setParameter("service", svc.getId()) .setParameter("ticket", WebUtils.getServiceTicketFromRequestScope(requestContext)) .build(); requestContext.getFlowScope().put("serviceWarningUrl", uri.toURL().toExternalForm()); return null; } }
final URIBuilder originalRequestUrl = new URIBuilder(request.getRequestURL().toString(), encode); originalRequestUrl.setParameters(request.getQueryString()); builder = new URIBuilder(scheme + serverName, encode); } else { builder = new URIBuilder(serverName, encode); if (builder.getPort() == -1 && !requestIsOnStandardPort(request)) { builder.setPort(request.getServerPort()); builder.setEncodedPath(builder.getEncodedPath() + request.getRequestURI()); if (!serviceParameterNames.isEmpty() && !originalRequestUrl.getQueryParams().isEmpty()) { for (final URIBuilder.BasicNameValuePair pair : originalRequestUrl.getQueryParams()) { String name = pair.getName(); if (!name.equals(artifactParameterName) && !serviceParameterNames.contains(name)) { if (name.contains("&") || name.contains("=") ){ URIBuilder encodedParamBuilder = new URIBuilder(); encodedParamBuilder.setParameters(name); for (final URIBuilder.BasicNameValuePair pair2 :encodedParamBuilder.getQueryParams()){ String name2 = pair2.getName(); if (!name2.equals(artifactParameterName) && !serviceParameterNames.contains(name2)) { builder.addParameter(name2, pair2.getValue()); builder.addParameter(name, pair.getValue()); final String result = builder.toString(); final String returnValue = encode ? response.encodeURL(result) : result; LOGGER.debug("serviceUrl generated: {}", returnValue);
@Test public void queryParamsAreEscaped() { URIBuilder builder = new URIBuilder(true) .setScheme("http") .setHost("apache.org") .setEncodedPath("/shindig") .addParameter("hello world", "foo&bar") .setFragment("foo"); assertEquals("http://apache.org/shindig?hello+world=foo%26bar#foo", builder.toString()); assertEquals("hello+world=foo&bar", builder.build().getQuery()); }
@Test public void parse() { URIBuilder builder = new URIBuilder() .digestURI(URI.create("http://apache.org/shindig?foo=bar%26baz&foo=three%3Dbaz#blah")); assertEquals("http", builder.getScheme()); assertEquals("apache.org", builder.getHost()); assertEquals("/shindig", builder.getPath()); List<URIBuilder.BasicNameValuePair> list = builder.getQueryParams(); for (URIBuilder.BasicNameValuePair pair : list) { assertEquals("foo", pair.getName()); assertTrue(pair.getValue().equals("three=baz") || pair.getValue().equals("bar&baz")); } assertEquals(list.size(), 2); assertEquals("blah", builder.getFragment()); }
@Test public void fragmentStringIsUnescaped() { URIBuilder builder = new URIBuilder(true) .setScheme("http") .setHost("apache.org") .setPath("/shindig") .setEncodedFragment("hello+world=world%26bar"); assertEquals("world&bar", builder.build().getFragment().split("=")[1]); }
@Test public void queryStringIsUnescaped() { URIBuilder builder = new URIBuilder() .setScheme("http") .setHost("apache.org") .setPath("/shindig") .setCustomQuery("hello+world=world%26bar"); assertEquals("world&bar", builder.build().getQuery().split("=")[1]); }
@Test public void constructFromUriAndModify() { URI uri = URI.create("http://apache.org/foo/bar?foo=bar#foo"); URIBuilder builder = new URIBuilder(uri); builder.setHost("example.org"); builder.addParameter("bar", "foo"); assertEquals("http://example.org/foo/bar?foo=bar&bar=foo#foo", builder.toString()); }
@Test public void justSchemeAndAuthority() { URIBuilder builder = new URIBuilder() .setScheme("http") .setHost("apache.org"); assertEquals("http://apache.org", builder.toString()); }
@Test public void justAuthorityAndPath() { URIBuilder builder = new URIBuilder() .setHost("apache.org") .setPath("/shindig"); assertEquals("//apache.org/shindig", builder.toString()); }
@Test public void justPath() { URIBuilder builder = new URIBuilder() .setPath("/shindig"); assertEquals("/shindig", builder.toString()); }
@Test public void justFragment() { URIBuilder builder = new URIBuilder() .setFragment("foo"); assertEquals("#foo", builder.toString()); }
@Test public void justQuery() { URIBuilder builder = new URIBuilder() .setCustomQuery("hello=world"); assertEquals("?hello=world", builder.toString()); }
@Test public void removeQueryParameter() { URIBuilder uri = new URIBuilder("http://www.example.com/foo?bar=baz&quux=baz"); uri.removeQuery(); assertEquals("http://www.example.com/foo", uri.toString()); }
@Test public void equalsAndHashCodeOk() { URIBuilder uri = new URIBuilder().digestURI(URI.create("http://example.org/foo/bar/baz?blah=blah#boo")); URIBuilder uri2 = new URIBuilder(URI.create("http://example.org/foo/bar/baz?blah=blah#boo")); assertEquals(uri, uri2); assertEquals(uri2, uri); assertEquals(uri, uri); assertNotNull(uri); assertNotSame(uri, "http://example.org/foo/bar/baz?blah=blah#boo"); assertNotSame(uri, URI.create("http://example.org/foo/bar/baz?blah=blah#boo")); assertEquals(uri.hashCode(), uri2.hashCode()); }
@Test public void constructFromUriAndBack() { URI uri = URI.create("http://apache.org/foo/bar?foo=bar&a=b&c=d&y=z&foo=zoo#foo"); URIBuilder builder = new URIBuilder(uri); assertEquals(uri, builder.build()); }
/** * Construct an instance from the provided URI. * * @param uri the uri to digest */ public URIBuilder(final URI uri) { super(); digestURI(uri); }
/** * Construct an instance from the string which must be a valid URI. * * @param string a valid URI in string form * @throws RuntimeException if the input is not a valid URI */ public URIBuilder(final String string) { super(); try { digestURI(new URI(string)); } catch (final URISyntaxException e) { throw new RuntimeException(e.getMessage(), e); } }