kris beaumont created CXF-4903: ---------------------------------- Summary: jaxws:handlers is not treated as a list in ServerFactoryBeanDefinitionParser Key: CXF-4903 URL: https://issues.apache.org/jira/browse/CXF-4903 Project: CXF Issue Type: Bug Affects Versions: 2.7.2 Reporter: kris beaumont
I find this in the code: @Override protected void mapElement(ParserContext ctx, BeanDefinitionBuilder bean, Element el, String name) { if ("properties".equals(name)) { Map<?, ?> map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition()); bean.addPropertyValue("properties", map); } else if ("executor".equals(name)) { setFirstChildAsProperty(el, ctx, bean, "serviceFactory.executor"); } else if ("invoker".equals(name)) { setFirstChildAsProperty(el, ctx, bean, "serviceFactory.invoker"); } else if ("binding".equals(name)) { setFirstChildAsProperty(el, ctx, bean, "bindingConfig"); } else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name) || "outInterceptors".equals(name) || "outFaultInterceptors".equals(name) || "features".equals(name) || "schemaLocations".equals(name)) { List<?> list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition()); bean.addPropertyValue(name, list); } else { setFirstChildAsProperty(el, ctx, bean, name); } } where I think the list treatment should also be done for the "handlers" property (that now uses the setFirstChildAsProperty default=> only one handler from the 'list' is added. So for this definition: <!----> <jaxws:server id="webService" address="/lightWS" > <jaxws:handlers> <list> <!--FIRST get the login data from the ecas login ticket header--> <bean class="ServiceTicketServerSOAPHandler" /> <!--SECOND get the username and map it to an applicationCode to be stored in the threadlocal --> <bean class="ApplicationCodeSoapHandler" /> </list> </jaxws:handlers> <jaxws:serviceBean> <ref bean="webServiceImpl" /> </jaxws:serviceBean> </jaxws:server> In the end I only have the first handler and not both, which should be easy to fix with: @Override protected void mapElement(ParserContext ctx, BeanDefinitionBuilder bean, Element el, String name) { if ("properties".equals(name)) { Map<?, ?> map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition()); bean.addPropertyValue("properties", map); } else if ("executor".equals(name)) { setFirstChildAsProperty(el, ctx, bean, "serviceFactory.executor"); } else if ("invoker".equals(name)) { setFirstChildAsProperty(el, ctx, bean, "serviceFactory.invoker"); } else if ("binding".equals(name)) { setFirstChildAsProperty(el, ctx, bean, "bindingConfig"); } else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name) || "outInterceptors".equals(name) || "outFaultInterceptors".equals(name) || "features".equals(name) || "schemaLocations".equals(name) || "handlers".equals(name) //also include the handlers ) { List<?> list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition()); bean.addPropertyValue(name, list); } else { setFirstChildAsProperty(el, ctx, bean, name); } } -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira