Add meaningful exception when trying to send message exchange before endpoint
activation
----------------------------------------------------------------------------------------
Key: SM-953
URL: https://issues.apache.org/activemq/browse/SM-953
Project: ServiceMix
Issue Type: Improvement
Components: servicemix-common
Reporter: Ben Pachol
Priority: Trivial
A message exchange in PollingEndpoint.java's Poll method cannot be sent because
the endpoint has yet to have been activated at that point. A meaningful
exception would help.
This example code is an endpoint class derived from PollingEndpoint that gives
a null pointer exception which isn't very meaningful.
public void poll() throws Exception
{
invokeIdentityService();
}
private boolean invokeIdentityService() throws MessagingException {
ComponentContext ctx =
getServiceUnit().getComponent().getComponentContext();
QName identityService = new
QName("http://servicemix.apache.org/servicemanagerassembly",
"httpService");
InOut identityExchange = exchangeFactory.createInOutExchange();
configureTarget("Identity Service", identityExchange, ctx,
null, identityService, "soap", "");
NormalizedMessage in = identityExchange.createMessage();
in.setContent(new StringSource("Testing"));
identityExchange.setInMessage(in);
sendSync(identityExchange);
NormalizedMessage out = identityExchange.getOutMessage();
boolean login = false;
if (out != null) {
//login = support.parseIdentityOutMessage(out.getContent());
} else {
// TODO: how should we handle faults
}
done(identityExchange);
return login;
}
public void configureTarget(String serviceDesc, MessageExchange
exchange, ComponentContext context, QName _interface, QName service,
String endpoint, String uri) throws MessagingException {
if (_interface == null && service == null && uri == null) {
throw new MessagingException(serviceDesc + ": interface,
service or uri should be specified");
}
/*if (uri != null) {
URIResolver.configureExchange(exchange, context, uri);
}*/
if (_interface != null) {
exchange.setInterfaceName(_interface);
}
if (service != null) {
exchange.setService(service);
if (endpoint != null) {
ServiceEndpoint se = context.getEndpoint(service, endpoint);
exchange.setEndpoint(se);
}
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.