use of com.sun.xml.rpc.spi.tools.HandlerChainInfo in project Payara by payara.
the class WsCompile method setupServiceHandlerChain.
private void setupServiceHandlerChain() {
Model model = wscompile.getProcessor().getModel();
Collection endpoints = webService.getEndpoints();
for (Iterator eIter = endpoints.iterator(); eIter.hasNext(); ) {
WebServiceEndpoint nextEndpoint = (WebServiceEndpoint) eIter.next();
if (!nextEndpoint.hasHandlers()) {
continue;
}
Port port = wsUtil.getPortFromModel(model, nextEndpoint.getWsdlPort());
if (port == null) {
throw new IllegalStateException("Model port for endpoint " + nextEndpoint.getEndpointName() + " not found");
}
List handlerChain = nextEndpoint.getHandlers();
HandlerChainInfo modelHandlerChain = port.getServerHCI();
List handlerInfoList = new ArrayList();
// Insert an container handler as the first element.
// This is needed to perform method authorization checks.
HandlerInfo preHandler = rpcFactory.createHandlerInfo();
String handlerClassName = nextEndpoint.implementedByEjbComponent() ? "org.glassfish.webservices.EjbContainerPreHandler" : "org.glassfish.webservices.ServletPreHandler";
preHandler.setHandlerClassName(handlerClassName);
handlerInfoList.add(preHandler);
// Collect all roles defined on each handler and set them on
// handler chain. NOTE : There is a bit of a mismatch here between
// 109 and JAXRPC. JAXRPC only defines roles at the handler chain
// level, whereas 109 descriptors put roles at the handler level.
Collection soapRoles = new HashSet();
for (Iterator hIter = handlerChain.iterator(); hIter.hasNext(); ) {
WebServiceHandler nextHandler = (WebServiceHandler) hIter.next();
HandlerInfo handlerInfo = createHandlerInfo(nextHandler);
handlerInfoList.add(handlerInfo);
soapRoles.addAll(nextHandler.getSoapRoles());
}
// Insert a container handler as the last element in the chain.
HandlerInfo postHandler = rpcFactory.createHandlerInfo();
handlerClassName = nextEndpoint.implementedByEjbComponent() ? "org.glassfish.webservices.EjbContainerPostHandler" : "org.glassfish.webservices.ServletPostHandler";
postHandler.setHandlerClassName(handlerClassName);
handlerInfoList.add(postHandler);
// @@@ should probably use addHandler api instead once
// == bug is fixed.
modelHandlerChain.setHandlersList(handlerInfoList);
for (Iterator roleIter = soapRoles.iterator(); roleIter.hasNext(); ) {
modelHandlerChain.addRole((String) roleIter.next());
}
}
}
Aggregations