in jbi/runtime/src/main/java/org/apache/servicemix/jbi/runtime/impl/DeliveryChannelImpl.java [138:170]
protected MessageExchange getMessageExchange(Exchange exchange) {
MessageExchange me;
synchronized (exchange) {
me = exchange.getProperty(MessageExchange.class);
if (me == null) {
if (exchange.getPattern() == Pattern.InOnly) {
me = new InOnlyImpl(exchange);
} else if (exchange.getPattern() == Pattern.InOptionalOut) {
me = new InOptionalOutImpl(exchange);
} else if (exchange.getPattern() == Pattern.InOut) {
me = new InOutImpl(exchange);
} else if (exchange.getPattern() == Pattern.RobustInOnly) {
me = new RobustInOnlyImpl(exchange);
} else {
throw new IllegalStateException("Unknown pattern: " + exchange.getPattern());
}
exchange.setProperty(MessageExchange.class, me);
}
}
// Translate the destination endpoint
if (((InternalExchange) exchange).getDestination() != null && me.getEndpoint() == null) {
Endpoint ep = ((InternalExchange) exchange).getDestination();
Map<String, ?> props = context.getNmr().getEndpointRegistry().getProperties(ep);
String strSvcName = (String) props.get(Endpoint.SERVICE_NAME);
QName serviceName = (strSvcName != null && strSvcName.length() > 0) ? QName.valueOf(strSvcName) : DEFAULT_SERVICE_NAME;
String endpointName = (String) props.get(Endpoint.ENDPOINT_NAME);
if (endpointName == null) {
endpointName = (String) props.get(Endpoint.NAME);
}
me.setEndpoint(new ServiceEndpointImpl(serviceName, endpointName));
}
return me;
}