}
}
if (host == null)
{
String url = requestLine.getUrlWithoutParams();
throw new NoReceiverForEndpointException(HttpMessages.noReceiverFoundForUrl(url));
}
String requestUriWithoutParams = requestLine.getUrlWithoutParams();
StringBuilder requestUri = new StringBuilder(80);
if (requestUriWithoutParams.indexOf("://") == -1)
{
requestUri.append(getProtocol()).append("://").append(host).append(':').append(port);
if (!ROOT_PATH.equals(requestUriWithoutParams))
{
requestUri.append(requestUriWithoutParams);
}
}
String uriStr = requestUri.toString();
// first check that there is a receiver on the root address
if (logger.isTraceEnabled())
{
logger.trace(String.format(LOOKUP_DEBUG_MESSAGE_FORMAT, "Primary", getName(), uriStr));
}
HttpMessageReceiver receiver = (HttpMessageReceiver) lookupReceiver(uriStr);
// If no receiver on the root and there is a request path, look up the
// received based on the root plus request path
if (receiver == null && !ROOT_PATH.equals(requestUriWithoutParams))
{
if (logger.isDebugEnabled())
{
logger.debug(String.format(LOOKUP_DEBUG_MESSAGE_FORMAT, "Secondary", getName(), uriStr));
}
receiver = (HttpMessageReceiver) findReceiverByStemConsideringMatchingHost(getReceivers(), uriStr);
if (receiver == null && logger.isWarnEnabled())
{
logger.warn(String.format(LOOKUP_DEBUG_MESSAGE_FORMAT, "No receiver found on secondary", getName(), uriStr));
logger.warn("Receivers on connector are: "
+ MapUtils.toString(getReceivers(), true));
}
}
if (receiver == null)
{
throw new NoReceiverForEndpointException(HttpMessages.noReceiverFoundForUrl(requestUriWithoutParams));
}
return receiver;
}