[ https://issues.apache.org/jira/browse/CXF-4220?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Beryozkin updated CXF-4220: ---------------------------------- Fix Version/s: 2.6 2.5.3 Assignee: Sergey Beryozkin > After loading XSDs from links in WADL, JAX-RS get all for all resources fail > with 400 > ------------------------------------------------------------------------------------- > > Key: CXF-4220 > URL: https://issues.apache.org/jira/browse/CXF-4220 > Project: CXF > Issue Type: Bug > Affects Versions: 2.5.2 > Environment: Linux > Reporter: Joanne Kubischta > Assignee: Sergey Beryozkin > Fix For: 2.5.3, 2.6 > > > We use a CustomCXFNonSpringJaxrsServlet with one overriding method in order > to use our hand written WADL. > @Override > protected void setSchemasLocations(JAXRSServerFactoryBean bean, > ServletConfig servletConfig) > { > super.setSchemasLocations(bean, servletConfig); > > // Set the WADL document location > if(servletConfig.getInitParameter(JAXRSUtils.DOC_LOCATION) != null) > { > > bean.setDocLocation(servletConfig.getInitParameter(JAXRSUtils.DOC_LOCATION)); > } > } > In the web.xml of the user resource, the XSDs are referenced as follows - > <init-param> > <param-name>jaxrs.schemaLocations</param-name> > <param-value> > classpath:schemas/xml.xsd > classpath:schemas/atom.xsd > classpath:schemas/user.xsd > classpath:schemas/user-role.xsd > </param-value> > </init-param> > In the wadl file, the grammar section is as follows - > <grammars> > <include href="xml.xsd" /> > <include href="atom.xsd" /> > <include href="user.xsd" /> > <include href="user-role.xsd" /> > </grammars> > Here are the steps to reproduce the error - > 1. Verify get all and get a single resource work for all resources including > user. > 2. Access user wadl from https://server:port/api/rest/users?_wadl > successfully but the grammar section is changed to - > <grammars> > <include href="https://server:8443/api/rest/users//xml.xsd" /> > <include href="https://server:8443/api/rest/users//atom.xsd" /> > <include href="https://server:8443/api/rest/users//user.xsd" /> > <include href="https://server:8443/api/rest/users//user-role.xsd" /> > </grammars> > 3. Repeat step 1. Result is good. > 4. Click the first link and view xml.xsd from a browser. Note xml.xsd is > availale from the internet and does not have a schemaLocation tag. > 5. Repeat step 1. Result is good. > 6. Click the link to atom.xsd or any of rest of the links and the XSD loads > correctly. Note all those XSDs are only available in the classpath of > user.war. > Below is an excerpt of how schema is referenced in the XSD - > <xs:import namespace="urn:api:rest:user-role" > schemaLocation="https://server:8443/api/rest/users//" /> > <xs:import namespace="http://www.w3.org/2005/Atom" > schemaLocation="https://server:8443/api/rest/users//" /> > 7. Do a get all request using https://server:8443/api/rest/users and get the > following error - > 400: Bad Request > org.xml.sax.SAXParseException: Premature end of file. > 8. Do a get all request to other resources and get the same 400. > 9. Restart JBoss and problem goes away. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira