List of usage examples for org.apache.commons.httpclient.methods PutMethod PutMethod
public PutMethod(String paramString)
From source file:org.apache.maven.wagon.providers.webdav.CorrectedWebdavResource.java
/** * Execute the PUT method for the given path. * * @param path the server relative path to put the data * @param inputStream The input stream.//from w w w .j a v a 2s. c o m * * @return true if the method is succeeded. */ public boolean putMethod(String path, InputStream inputStream, int contentLength) throws IOException { setClient(); PutMethod method = new PutMethod(URIUtil.encodePathQuery(path)); method.setFollowRedirects(super.followRedirects); generateIfHeader(method); if (getGetContentType() != null && !getGetContentType().equals("")) { method.setRequestHeader("Content-Type", getGetContentType()); } method.setRequestContentLength(contentLength); method.setRequestBody(inputStream); generateTransactionHeader(method); generateAdditionalHeaders(method); int statusCode = client.executeMethod(method); setStatusCode(statusCode); return isHttpSuccess(statusCode); }
From source file:org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.java
private void put(final InputStream stream, Resource resource, File source) throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException { String url = getRepository().getUrl(); String[] parts = StringUtils.split(resource.getName(), "/"); for (int i = 0; i < parts.length; i++) { // TODO: Fix encoding... // url += "/" + URLEncoder.encode( parts[i], System.getProperty("file.encoding") ); url += "/" + URLEncoder.encode(parts[i]); }//ww w. jav a2 s . c o m //Parent directories need to be created before posting try { mkdirs(PathUtils.dirname(resource.getName())); } catch (IOException e) { fireTransferError(resource, e, TransferEvent.REQUEST_GET); } PutMethod putMethod = new PutMethod(url); firePutStarted(resource, source); try { putMethod.setRequestEntity(new RequestEntityImplementation(stream, resource, this, source)); int statusCode; try { statusCode = execute(putMethod); } catch (IOException e) { fireTransferError(resource, e, TransferEvent.REQUEST_PUT); throw new TransferFailedException(e.getMessage(), e); } fireTransferDebug(url + " - Status code: " + statusCode); // Check that we didn't run out of retries. switch (statusCode) { // Success Codes case HttpStatus.SC_OK: // 200 case HttpStatus.SC_CREATED: // 201 case HttpStatus.SC_ACCEPTED: // 202 case HttpStatus.SC_NO_CONTENT: // 204 break; case SC_NULL: { TransferFailedException e = new TransferFailedException("Failed to transfer file: " + url); fireTransferError(resource, e, TransferEvent.REQUEST_PUT); throw e; } case HttpStatus.SC_FORBIDDEN: fireSessionConnectionRefused(); throw new AuthorizationException("Access denied to: " + url); case HttpStatus.SC_NOT_FOUND: throw new ResourceDoesNotExistException("File: " + url + " does not exist"); //add more entries here default: { TransferFailedException e = new TransferFailedException( "Failed to transfer file: " + url + ". Return code is: " + statusCode); fireTransferError(resource, e, TransferEvent.REQUEST_PUT); throw e; } } firePutCompleted(resource, source); } finally { putMethod.releaseConnection(); } }
From source file:org.apache.sling.commons.testing.integration.SlingIntegrationTestClient.java
/** Upload a file to the Sling repository * @return the HTTP status code//from w w w. j a v a 2s . c o m */ public int upload(String toUrl, InputStream is) throws IOException { final PutMethod put = new PutMethod(toUrl); put.setRequestEntity(new InputStreamRequestEntity(is)); return httpClient.executeMethod(put); }
From source file:org.apache.sling.discovery.impl.topology.connector.TopologyConnectorClient.java
/** ping the server and pass the announcements between the two **/ void ping(final boolean force) { if (autoStopped) { // then we suppress any further pings! logger.debug("ping: autoStopped=true, hence suppressing any further pings."); return;/*from w ww . j a v a 2 s .co m*/ } if (force) { backoffPeriodEnd = -1; } else if (backoffPeriodEnd > 0) { if (System.currentTimeMillis() < backoffPeriodEnd) { logger.debug("ping: not issueing a heartbeat due to backoff instruction from peer."); return; } else { logger.debug("ping: backoff period ended, issuing another ping now."); } } final String uri = connectorUrl.toString() + "." + clusterViewService.getSlingId() + ".json"; if (logger.isDebugEnabled()) { logger.debug("ping: connectorUrl=" + connectorUrl + ", complete uri=" + uri); } HttpClient httpClient = new HttpClient(); final PutMethod method = new PutMethod(uri); Announcement resultingAnnouncement = null; try { String userInfo = connectorUrl.getUserInfo(); if (userInfo != null) { Credentials c = new UsernamePasswordCredentials(userInfo); httpClient.getState() .setCredentials(new AuthScope(method.getURI().getHost(), method.getURI().getPort()), c); } Announcement topologyAnnouncement = new Announcement(clusterViewService.getSlingId()); topologyAnnouncement.setServerInfo(serverInfo); final ClusterView clusterView = clusterViewService.getClusterView(); topologyAnnouncement.setLocalCluster(clusterView); if (force) { logger.debug("ping: sending a resetBackoff"); topologyAnnouncement.setResetBackoff(true); } announcementRegistry.addAllExcept(topologyAnnouncement, clusterView, new AnnouncementFilter() { public boolean accept(final String receivingSlingId, final Announcement announcement) { // filter out announcements that are of old cluster instances // which I dont really have in my cluster view at the moment final Iterator<InstanceDescription> it = clusterViewService.getClusterView().getInstances() .iterator(); while (it.hasNext()) { final InstanceDescription instance = it.next(); if (instance.getSlingId().equals(receivingSlingId)) { // then I have the receiving instance in my cluster view // all fine then return true; } } // looks like I dont have the receiving instance in my cluster view // then I should also not propagate that announcement anywhere return false; } }); final String p = requestValidator.encodeMessage(topologyAnnouncement.asJSON()); if (logger.isDebugEnabled()) { logger.debug("ping: topologyAnnouncement json is: " + p); } requestValidator.trustMessage(method, p); if (config.isGzipConnectorRequestsEnabled()) { // tell the server that the content is gzipped: method.addRequestHeader("Content-Encoding", "gzip"); // and gzip the body: final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final GZIPOutputStream gzipOut = new GZIPOutputStream(baos); gzipOut.write(p.getBytes("UTF-8")); gzipOut.close(); final byte[] gzippedEncodedJson = baos.toByteArray(); method.setRequestEntity(new ByteArrayRequestEntity(gzippedEncodedJson, "application/json")); lastRequestEncoding = "gzip"; } else { // otherwise plaintext: method.setRequestEntity(new StringRequestEntity(p, "application/json", "UTF-8")); lastRequestEncoding = "plaintext"; } // independent of request-gzipping, we do accept the response to be gzipped, // so indicate this to the server: method.addRequestHeader("Accept-Encoding", "gzip"); DefaultHttpMethodRetryHandler retryhandler = new DefaultHttpMethodRetryHandler(0, false); httpClient.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, retryhandler); httpClient.getHttpConnectionManager().getParams() .setConnectionTimeout(1000 * config.getConnectionTimeout()); httpClient.getHttpConnectionManager().getParams().setSoTimeout(1000 * config.getSoTimeout()); method.getParams().setSoTimeout(1000 * config.getSoTimeout()); httpClient.executeMethod(method); if (logger.isDebugEnabled()) { logger.debug("ping: done. code=" + method.getStatusCode() + " - " + method.getStatusText()); } lastStatusCode = method.getStatusCode(); lastResponseEncoding = null; if (method.getStatusCode() == HttpServletResponse.SC_OK) { final Header contentEncoding = method.getResponseHeader("Content-Encoding"); if (contentEncoding != null && contentEncoding.getValue() != null && contentEncoding.getValue().contains("gzip")) { lastResponseEncoding = "gzip"; } else { lastResponseEncoding = "plaintext"; } String responseBody = requestValidator.decodeMessage(method); // limiting to 16MB, should be way enough if (logger.isDebugEnabled()) { logger.debug("ping: response body=" + responseBody); } if (responseBody != null && responseBody.length() > 0) { Announcement inheritedAnnouncement = Announcement.fromJSON(responseBody); final long backoffInterval = inheritedAnnouncement.getBackoffInterval(); if (backoffInterval > 0) { // then reset the backoffPeriodEnd: /* minus 1 sec to avoid slipping the interval by a few millis */ this.backoffPeriodEnd = System.currentTimeMillis() + (1000 * backoffInterval) - 1000; logger.debug("ping: servlet instructed to backoff: backoffInterval=" + backoffInterval + ", resulting in period end of " + new Date(backoffPeriodEnd)); } else { logger.debug("ping: servlet did not instruct any backoff-ing at this stage"); this.backoffPeriodEnd = -1; } if (inheritedAnnouncement.isLoop()) { if (logger.isDebugEnabled()) { logger.debug( "ping: connector response indicated a loop detected. not registering this announcement from " + inheritedAnnouncement.getOwnerId()); } if (inheritedAnnouncement.getOwnerId().equals(clusterViewService.getSlingId())) { // SLING-3316 : local-loop detected. Check config to see if we should stop this connector if (config.isAutoStopLocalLoopEnabled()) { inheritedAnnouncement = null; // results in connected -> false and representsloop -> true autoStopped = true; // results in isAutoStopped -> true } } } else { inheritedAnnouncement.setInherited(true); if (announcementRegistry.registerAnnouncement(inheritedAnnouncement) == -1) { if (logger.isDebugEnabled()) { logger.debug( "ping: connector response is from an instance which I already see in my topology" + inheritedAnnouncement); } statusDetails = "receiving side is seeing me via another path (connector or cluster) already (loop)"; return; } } resultingAnnouncement = inheritedAnnouncement; statusDetails = null; } else { statusDetails = "no response body received"; } } else { statusDetails = "got HTTP Status-Code: " + lastStatusCode; } // SLING-2882 : reset suppressPingWarnings_ flag in success case suppressPingWarnings_ = false; } catch (URIException e) { logger.warn("ping: Got URIException: " + e + ", uri=" + uri); statusDetails = e.toString(); } catch (IOException e) { // SLING-2882 : set/check the suppressPingWarnings_ flag if (suppressPingWarnings_) { if (logger.isDebugEnabled()) { logger.debug("ping: got IOException: " + e + ", uri=" + uri); } } else { suppressPingWarnings_ = true; logger.warn("ping: got IOException [suppressing further warns]: " + e + ", uri=" + uri); } statusDetails = e.toString(); } catch (JSONException e) { logger.warn("ping: got JSONException: " + e); statusDetails = e.toString(); } catch (RuntimeException re) { logger.warn("ping: got RuntimeException: " + re, re); statusDetails = re.toString(); } finally { method.releaseConnection(); lastInheritedAnnouncement = resultingAnnouncement; lastPingedAt = System.currentTimeMillis(); } }
From source file:org.apache.sling.discovery.impl.topology.connector.TopologyRequestValidatorTest.java
@Test public void testTrustRequest() throws IOException { final PutMethod method = new PutMethod("/TestUri"); String clearMessage = "TestMessage"; final String message = topologyRequestValidator.encodeMessage(clearMessage); Assert.assertNotNull(message);//from w w w . j a v a2s. c o m Assert.assertNotEquals(message, clearMessage); topologyRequestValidator.trustMessage(method, message); Assert.assertNotNull(method.getRequestHeader(TopologyRequestValidator.HASH_HEADER)); Assert.assertNotNull(method.getRequestHeader(TopologyRequestValidator.HASH_HEADER).getValue()); Assert.assertTrue(method.getRequestHeader(TopologyRequestValidator.HASH_HEADER).getValue().length() > 0); Assert.assertNotNull(method.getRequestHeader(TopologyRequestValidator.SIG_HEADER)); Assert.assertNotNull(method.getRequestHeader(TopologyRequestValidator.SIG_HEADER).getValue()); Assert.assertTrue(method.getRequestHeader(TopologyRequestValidator.SIG_HEADER).getValue().length() > 0); final HttpServletRequest request = context.mock(HttpServletRequest.class); context.checking(new Expectations() { { allowing(request).getHeader(with(TopologyRequestValidator.HASH_HEADER)); will(returnValue(method.getRequestHeader(TopologyRequestValidator.HASH_HEADER).getValue())); allowing(request).getHeader(with(TopologyRequestValidator.SIG_HEADER)); will(returnValue(method.getRequestHeader(TopologyRequestValidator.SIG_HEADER).getValue())); allowing(request).getHeader(with("Content-Encoding")); will(returnValue("")); allowing(request).getRequestURI(); will(returnValue(method.getPath())); allowing(request).getReader(); will(returnValue(new BufferedReader(new StringReader(message)))); } }); Assert.assertTrue(topologyRequestValidator.isTrusted(request)); Assert.assertEquals(clearMessage, topologyRequestValidator.decodeMessage(request)); }
From source file:org.apache.sling.launchpad.webapp.integrationtest.servlets.resolution.PutMethodServletTest.java
public void testPutMethodServletSpecificRT() throws Exception { final PutMethod put = new PutMethod(testNodeRT.nodeUrl); final int status = httpClient.executeMethod(put); assertEquals("PUT to testNodeRT should return 200", 200, status); final String content = put.getResponseBodyAsString(); assertServlet(content, PUT_SERVLET_SUFFIX); }
From source file:org.apache.sling.launchpad.webapp.integrationtest.servlets.resolution.PutMethodServletTest.java
public void testPutMethodServletDefaultRT() throws Exception { final PutMethod put = new PutMethod(testNodeNORT.nodeUrl); final int status = httpClient.executeMethod(put); assertFalse("PUT to testNodeRT should not return 200", 200 == status); }
From source file:org.apache.sling.maven.bundlesupport.AbstractBundleInstallMojo.java
private int performPut(String targetURL, File file) throws HttpException, IOException { PutMethod filePut = new PutMethod(getURLWithFilename(targetURL, file.getName())); try {// w w w . ja va2 s . c o m filePut.setRequestEntity(new FileRequestEntity(file, mimeType)); return getHttpClient().executeMethod(filePut); } finally { filePut.releaseConnection(); } }
From source file:org.apache.webdav.ant.Utils.java
public static void putFile(HttpClient client, HttpURL url, InputStream is, String contentType, String lockToken) throws IOException, HttpException { PutMethod put = new PutMethod(url.getEscapedURI()); generateIfHeader(put, lockToken);//from ww w. ja va2 s . c o m put.setRequestHeader("Content-Type", contentType); put.setRequestBody(is); put.setFollowRedirects(true); int status = client.executeMethod(put); switch (status) { case WebdavStatus.SC_OK: case WebdavStatus.SC_CREATED: case WebdavStatus.SC_NO_CONTENT: return; default: HttpException ex = new HttpException(); ex.setReason(put.getStatusText()); ex.setReasonCode(status); throw ex; } }
From source file:org.apache.webdav.lib.WebdavResource.java
/** * Execute the PUT method for the given path. * * @param path the server relative path to put the data * @param data The byte array.// w w w.j av a 2 s.co m * @return true if the method is succeeded. * @exception HttpException * @exception IOException */ public boolean putMethod(String path, byte[] data) throws HttpException, IOException { setClient(); PutMethod method = new PutMethod(URIUtil.encodePathQuery(path)); generateIfHeader(method); if (getGetContentType() != null && !getGetContentType().equals("")) method.setRequestHeader("Content-Type", getGetContentType()); method.setRequestHeader("Content-Length", String.valueOf(data.length)); method.setRequestBody(new ByteArrayInputStream(data)); generateTransactionHeader(method); generateAdditionalHeaders(method); int statusCode = client.executeMethod(method); setStatusCode(statusCode); return (statusCode >= 200 && statusCode < 300) ? true : false; }