protected Object invoke(Exchange exchange,
Object serviceObject,
Method m,
List<Object> params) {
// set up the webservice request context
WrappedMessageContext ctx = new WrappedMessageContext(exchange.getInMessage(), Scope.APPLICATION);
Map< String, Object > handlerScopedStuff = removeHandlerProperties(ctx);
WebServiceContextImpl.setMessageContext(ctx);
List< Object > res = null;
try {
if ((params == null || params.isEmpty()) && m.getDeclaringClass().equals(Provider.class)) {
params = Collections.singletonList(null);
}
res = CastUtils.cast((List)super.invoke(exchange, serviceObject, m, params));
addHandlerProperties(ctx, handlerScopedStuff);
//update the webservice response context
updateWebServiceContext(exchange, ctx);
} finally {
//clear the WebServiceContextImpl's ThreadLocal variable
WebServiceContextImpl.clear();
}
return res;
}
|