private URL getLocationUrl(MutableHttpServletResponse servletResponse) throws MalformedURLException { String locationHeader = servletResponse.getHeader(CommonHttpHeader.LOCATION.name()); if (StringUtilities.isNotBlank(locationHeader)) { return new URL(locationHeader); } return null; }
@Override public FilterDirector handleRequest( HttpServletRequest httpRequest, ReadableHttpServletResponse httpResponse) { MutableHttpServletRequest request = MutableHttpServletRequest.wrap(httpRequest); MutableHttpServletResponse response = MutableHttpServletResponse.wrap(httpRequest, httpResponse); FilterDirector filterDirector = new FilterDirectorImpl(); MediaType contentType = getContentType(request.getHeaderValue("content-type")); List<MediaType> acceptValues = getAcceptValues(request.getPreferredHeaders("Accept", DEFAULT_TYPE)); List<XmlChainPool> pools = getHandlerChainPool(request.getMethod(), contentType, acceptValues, "", requestProcessors); if (pools.isEmpty()) { filterDirector.setFilterAction(FilterAction.PROCESS_RESPONSE); return filterDirector; } try { ServletInputStream in = request.getInputStream(); TranslationResult result = null; for (XmlChainPool pool : pools) { final ByteBuffer internalBuffer = new CyclicByteBuffer(DEFAULT_BUFFER_SIZE, true); result = pool.executePool( new TranslationPreProcessor(in, contentType, true).getBodyStream(), new ByteBufferServletOutputStream(internalBuffer), getInputParameters(TranslationType.REQUEST, request, response, result)); if (result.isSuccess()) { in = new ByteBufferInputStream(internalBuffer); request.setInputStream(in); result.applyResults(filterDirector); if (StringUtilities.isNotBlank(pool.getResultContentType())) { filterDirector .requestHeaderManager() .putHeader("content-type", pool.getResultContentType()); contentType = getContentType(pool.getResultContentType()); } filterDirector.setFilterAction(FilterAction.PROCESS_RESPONSE); } else { filterDirector.setResponseStatus(HttpStatusCode.BAD_REQUEST); filterDirector.setFilterAction(FilterAction.RETURN); break; } } } catch (IOException ex) { LOG.error("Error executing request transformer chain", ex); filterDirector.setResponseStatus(HttpStatusCode.INTERNAL_SERVER_ERROR); filterDirector.setFilterAction(FilterAction.RETURN); } return filterDirector; }
private AuthToken checkUserCache(String tenantId, String token) { if (cache == null) { return null; } String key; if (StringUtilities.isNotBlank(tenantId)) { key = tenantId + ":" + token; } else { key = token; } return cache.getUserToken(key, token); }
private void unsubscribeAll() { synchronized (lock) { initialized = false; if (validators == null) { return; } for (ValidatorInfo info : validators) { if (StringUtilities.isNotBlank(info.getUri())) { manager.unsubscribeFrom(info.getUri(), wadlListener); } } } }
@Override public FilterDirector handleResponse( HttpServletRequest httpRequest, ReadableHttpServletResponse httpResponse) { MutableHttpServletRequest request = MutableHttpServletRequest.wrap(httpRequest); MutableHttpServletResponse response = MutableHttpServletResponse.wrap(httpRequest, httpResponse); final FilterDirector filterDirector = new FilterDirectorImpl(); filterDirector.setFilterAction(FilterAction.PASS); MediaType contentType = getContentType(response.getHeaderValue("Content-Type")); List<MediaType> acceptValues = getAcceptValues(request.getPreferredHeaders("Accept", DEFAULT_TYPE)); List<XmlChainPool> pools = getHandlerChainPool( "", contentType, acceptValues, String.valueOf(response.getStatus()), responseProcessors); if (pools.isEmpty()) { filterDirector.setResponseStatusCode(response.getStatus()); return filterDirector; } try { filterDirector.setResponseStatusCode(response.getStatus()); if (response.hasBody()) { InputStream in = response.getBufferedOutputAsInputStream(); TranslationResult result = null; for (XmlChainPool pool : pools) { if (in.available() > 0) { result = pool.executePool( new TranslationPreProcessor(in, contentType, true).getBodyStream(), filterDirector.getResponseOutputStream(), getInputParameters(TranslationType.RESPONSE, request, response, result)); if (result.isSuccess()) { result.applyResults(filterDirector); if (StringUtilities.isNotBlank(pool.getResultContentType())) { filterDirector .requestHeaderManager() .putHeader("content-type", pool.getResultContentType()); contentType = getContentType(pool.getResultContentType()); } in = new ByteArrayInputStream(filterDirector.getResponseMessageBodyBytes()); } else { filterDirector.setResponseStatus(HttpStatusCode.INTERNAL_SERVER_ERROR); response.setContentLength(0); filterDirector.responseHeaderManager().removeHeader("Content-Length"); break; } } } } } catch (IOException ex) { LOG.error("Error executing response transformer chain", ex); filterDirector.setResponseStatus(HttpStatusCode.INTERNAL_SERVER_ERROR); response.setContentLength(0); } return filterDirector; }