@Override public ServletEndpoint getEndpoint() { return (ServletEndpoint) super.getEndpoint(); } }
private ServletEndpoint getServletEndpoint(HttpConsumer consumer) { if (!(consumer.getEndpoint() instanceof ServletEndpoint)) { throw new RuntimeException("Invalid consumer type. Must be ServletEndpoint but is " + consumer.getClass().getName()); } return (ServletEndpoint)consumer.getEndpoint(); }
private ServletEndpoint getServletEndpoint(HttpConsumer consumer) { if (!(consumer.getEndpoint() instanceof ServletEndpoint)) { throw new IllegalArgumentException( "Invalid consumer type. Must be ServletEndpoint but is " + consumer.getClass().getName()); } return (ServletEndpoint) consumer.getEndpoint(); }
@Override public String getRestrictMethod() { return consumer.getEndpoint().getHttpMethodRestrict(); }
@Override public boolean isMatchOnUriPrefix() { return consumer.getEndpoint().isMatchOnUriPrefix(); }
public void connect(HttpConsumer consumer) { log.debug("Connecting consumer: {}", consumer); consumers.put(consumer.getEndpoint().getEndpointUri(), consumer); }
public HttpBinding getBinding() { return getEndpoint().getHttpBinding(); }
public void disconnect(HttpConsumer consumer) { log.debug("Disconnecting consumer: {}", consumer); consumers.remove(consumer.getEndpoint().getEndpointUri()); }
public String getPath() { return getEndpoint().getPath(); }
@Override protected void doStart() throws Exception { super.doStart(); if (getEndpoint().canConnect(this)) { canConnected = true; getEndpoint().connect(this); suspended = false; } }
protected HttpConsumer doResolve(HttpServletRequest request, String method, Map<String, HttpConsumer> consumers) { String path = request.getPathInfo(); if (path == null) { return null; } HttpConsumer answer = consumers.get(path); List<HttpConsumer> candidates = resolveCandidates(request, method, consumers); // extra filter by restrict candidates = candidates.stream().filter(c -> matchRestMethod(method, c.getEndpoint().getHttpMethodRestrict())).collect(Collectors.toList()); if (candidates.size() == 1) { answer = candidates.get(0); } return answer; }
@Override protected HttpConsumer resolve(HttpServletRequest request) { String path = request.getPathInfo(); log.trace("Request path is: {}", path); String endpointName = getEndpointNameFromPath(path); log.trace("Looking up consumer for endpoint: {}", endpointName); HttpConsumer answer = consumers.get(endpointName); if (answer == null) { if (LOGGER.isDebugEnabled()) { log.debug("Consumer Keys: {}", consumers.keySet()); } for (Entry<String, HttpConsumer> entry : consumers.entrySet()) { if (entry.getValue().getEndpoint().isMatchOnUriPrefix() && path.startsWith(entry.getKey())) { answer = consumers.get(entry.getKey()); break; } } } return answer; }
private List<HttpConsumer> resolveCandidates(HttpServletRequest request, String method, Map<String, HttpConsumer> consumers) { String path = request.getPathInfo(); List<HttpConsumer> candidates = new ArrayList<>(); for (String key : consumers.keySet()) { //We need to look up the consumer path here String consumerPath = consumers.get(key).getPath(); HttpConsumer consumer = consumers.get(key); boolean matchOnUriPrefix = consumer.getEndpoint().isMatchOnUriPrefix(); // Just make sure the we get the right consumer path first if (RestConsumerContextPathMatcher.matchPath(path, consumerPath, matchOnUriPrefix)) { candidates.add(consumer); } } return candidates; }
@Override protected void doStop() throws Exception { suspended = false; if (canConnected) { canConnected = false; getEndpoint().disconnect(this); } super.doStop(); }
if (consumer.getEndpoint().getHttpMethodRestrict() != null && !consumer.getEndpoint().getHttpMethodRestrict().equals(request.getMethod())) { response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); return;
if (allowedMethods == null && consumer.getEndpoint().getHttpMethodRestrict() != null) { allowedMethods = consumer.getEndpoint().getHttpMethodRestrict(); if (consumer.getEndpoint().getHttpMethodRestrict() != null && !consumer.getEndpoint().getHttpMethodRestrict().contains(request.getMethod())) { response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); return; Exchange exchange = consumer.getEndpoint().createExchange(ExchangePattern.InOut); if (consumer.getEndpoint().isBridgeEndpoint()) { exchange.setProperty(Exchange.SKIP_GZIP_ENCODING, Boolean.TRUE); exchange.setProperty(Exchange.SKIP_WWW_FORM_URLENCODED, Boolean.TRUE); if (consumer.getEndpoint().isDisableStreamCache()) { exchange.setProperty(Exchange.DISABLE_HTTP_STREAM_CACHE, Boolean.TRUE); exchange.setIn(new HttpMessage(exchange, consumer.getEndpoint(), request, response)); String contextPath = consumer.getEndpoint().getPath(); exchange.getIn().setHeader("CamelServletContextPath", contextPath); log.trace("Writing response for exchangeId: {}", exchange.getExchangeId()); Integer bs = consumer.getEndpoint().getResponseBufferSize(); if (bs != null) { log.trace("Using response buffer size: {}", bs);
if (consumer.getEndpoint().isSuspended()) { log.debug("Consumer suspended, cannot service request {}", request); response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE); if (consumer.getEndpoint().getHttpMethodRestrict() != null && !consumer.getEndpoint().getHttpMethodRestrict().equals(request.getMethod())) { response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); return; if ("TRACE".equals(request.getMethod()) && !consumer.getEndpoint().isTraceEnabled()) { response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); return; Exchange exchange = new DefaultExchange(consumer.getEndpoint(), ExchangePattern.InOut); if (consumer.getEndpoint().isBridgeEndpoint()) { exchange.setProperty(Exchange.SKIP_GZIP_ENCODING, Boolean.TRUE); if (consumer.getEndpoint().isDisableStreamCache()) { exchange.setProperty(Exchange.DISABLE_HTTP_STREAM_CACHE, Boolean.TRUE); exchange.setIn(new HttpMessage(exchange, consumer.getEndpoint(), request, response)); String contextPath = consumer.getEndpoint().getPath(); exchange.getIn().setHeader("CamelServletContextPath", contextPath); Integer bs = consumer.getEndpoint().getResponseBufferSize(); if (bs != null) { log.trace("Using response buffer size: {}", bs);