private String path(final String resource, final Object... params) { final String path; final Escaper escaper = UrlEscapers.urlPathSegmentEscaper(); if (params.length == 0) { path = resource; } else { final List<String> encodedParams = Lists.newArrayList(); for (final Object param : params) { encodedParams.add(escaper.escape(param.toString())); } path = format(resource, encodedParams.toArray()); } return path; }
@RequestMapping( value = "/channel/{channelId}/artifacts/{artifactId}/generate", method = RequestMethod.GET) @HttpConstraint(PERMIT) public ModelAndView generate( @PathVariable("channelId") final String channelId, @PathVariable("artifactId") final String artifactId) { return Channels.withArtifact( this.service, channelId, artifactId, ModifiableChannel.class, (channel, artifact) -> { channel.getContext().regenerate(artifact.getId()); return new ModelAndView( "redirect:/channel/" + UrlEscapers.urlPathSegmentEscaper().escape(artifact.getChannelId().getId()) + "/view"); }); }
@Override public void init() { HttpURLConnection conn = null; try { StringBuilder urlMaker = new StringBuilder(url); if (!params.isEmpty()) { Escaper escaper = UrlEscapers.urlPathSegmentEscaper(); urlMaker.append('?'); for (Map.Entry<String, String> entry : params.entrySet()) { urlMaker.append(escaper.escape(entry.getKey())); urlMaker.append('='); urlMaker.append(escaper.escape(entry.getValue())); urlMaker.append('&'); } } URL javaUrl = new URL(urlMaker.toString()); conn = (HttpURLConnection) javaUrl.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); if (!data.isNull()) { writeData(conn); } underlyingInputStream = conn.getInputStream(); bundleizer = format.createBundleizer(underlyingInputStream, new ListBundle()); } catch (Exception outer) { if (conn != null && conn.getErrorStream() != null) { try { log.error( "URL connection was unsuccessful. Response is {}", new String(ByteStreams.toByteArray(conn.getErrorStream()))); } catch (IOException inner) { log.error("During connection error failure to read error stream: ", inner); } } throw Throwables.propagate(outer); } }