@Override public String getConsumerPath() { return consumer.getPath(); }
@Override public void disconnect(HttpConsumer consumer) { String path = consumer.getPath(); String endpointName = getEndpointNameFromPath(path); log.debug("Disconnecting consumer: {}", endpointName); consumers.remove(endpointName); }
@Override public void register(HttpConsumer consumer) { if (LOG.isDebugEnabled()) { LOG.debug("Registering consumer for path {} providers present: {}", consumer.getPath(), providers.size()); } consumers.add(consumer); for (CamelServlet provider : providers) { provider.connect(consumer); } }
@Override public void unregister(HttpConsumer consumer) { if (LOG.isDebugEnabled()) { LOG.debug("Unregistering consumer for path {}", consumer.getPath()); } consumers.remove(consumer); for (CamelServlet provider : providers) { provider.disconnect(consumer); } }
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 public void connect(HttpConsumer consumer) { log.debug("Getting ServletEndpoint for consumer: {}", consumer); ServletEndpoint endpoint = getServletEndpoint(consumer); if (endpoint.getServletName() != null) { String endpointName = getEndpointNameFromPath(consumer.getPath()); log.debug("Adding consumer for endpointName: {}", endpointName); consumers.put(endpointName, consumer); } }
log.debug("Dispatching to Websocket Consumer at {}", consumer.getPath()); ((WebsocketConsumer)consumer).service(request, response);