private List<String> getVersions(String gatewayID) throws AceRestException { try { return m_provider.getVersions(gatewayID); } catch (IllegalArgumentException iae) { throw new AceRestException(HttpServletResponse.SC_NOT_FOUND, "Unknown gateway (" + gatewayID + ")"); } catch (IOException ioe) { m_log.log(LogService.LOG_WARNING, "Error getting available versions.", ioe); throw new AceRestException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error getting available versions."); } }
m_log.log(LogService.LOG_WARNING, e.getMessage(), e); e.handleAsHttpError(response);
/** * Make sure the path is valid. * Also returns the splited version of #path. * * @param path http request path * * @return splitted version of #path. Split delim is "/" * * @throws org.apache.ace.deployment.servlet.AceRestException if path is not valid or cannot be processed. */ private String[] verifyAndGetPathElements(String path) throws AceRestException { if (path == null) { throw new AceRestException(HttpServletResponse.SC_BAD_REQUEST, "Request URI is invalid"); } String[] elements = path.split("/"); int numberOfElements = elements.length; if ((numberOfElements < 3) || (numberOfElements > 4) || !VERSIONS.equals(elements[2])) { throw new AceRestException(HttpServletResponse.SC_BAD_REQUEST, "Request URI is invalid"); } return elements; }
/** * Serve the case where requested path is like: * http://host/endpoint/gatewayid/versions/ returns a list of versions available for the specified gateway * * @param versions versions to be put into response * @param response response object. */ private void handleVersionsRequest(List<String> versions, HttpServletResponse response) throws AceRestException { ServletOutputStream output = null; response.setContentType(TEXT_MIMETYPE); try { output = response.getOutputStream(); for (String version : versions) { output.print(version); output.print("\n"); } } catch (IOException e) { throw new AceRestException(HttpServletResponse.SC_BAD_REQUEST, "Request URI is invalid"); } finally { tryClose(output); } }
private void handlePackageDelivery(final String gatewayID, final String version, final List<String> versions, final HttpServletRequest request, final HttpServletResponse response) throws AceRestException { ServletOutputStream output = null; response.setContentType(TEXT_MIMETYPE); try { output = response.getOutputStream(); if (!versions.contains(version)) { throw new AceRestException(HttpServletResponse.SC_NOT_FOUND, "Unknown version (" + version + ")"); } String current = request.getParameter(CURRENT); InputStream inputStream; if (current != null) { inputStream = m_streamGenerator.getDeploymentPackage(gatewayID, current, version); } else { inputStream = m_streamGenerator.getDeploymentPackage(gatewayID, version); } response.setContentType(DP_MIMETYPE); byte[] buffer = new byte[1024 * 32]; for (int bytesRead = inputStream.read(buffer); bytesRead != -1; bytesRead = inputStream.read(buffer)) { output.write(buffer, 0, bytesRead); } } catch (IOException e) { throw new AceRestException(HttpServletResponse.SC_BAD_REQUEST, "Request URI is invalid"); } finally { tryClose(output); } }