The prefix ... isn't the prefix, which has been defined last thrown in Correct 
XML documents
--------------------------------------------------------------------------------------------

                 Key: WSCOMMONS-573
                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-573
             Project: WS-Commons
          Issue Type: Bug
          Components: Utilities
    Affects Versions: XmlSchema 1.4.6
            Reporter: John McCrae
            Priority: Minor


In certain cases the following exception is thrown:

GRAVE: The prefix xsd isn't the prefix, which has been defined last.
java.lang.IllegalStateException: The prefix xsd isn't the prefix, which has 
been defined last.
        at 
org.apache.ws.commons.util.NamespaceContextImpl.endPrefixMapping(NamespaceContextImpl.java:92)
        at 
org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endPrefixMapping(RecursiveTypeParserImpl.java:192)
        at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endNamespaceMapping(AbstractSAXParser.java:2175)
        at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:604)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at 
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at 
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at 
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at 
org.apache.xmlrpc.server.XmlRpcStreamServer.getRequest(XmlRpcStreamServer.java:65)
        at 
org.apache.xmlrpc.server.XmlRpcStreamServer.execute(XmlRpcStreamServer.java:199)
        at 
org.apache.xmlrpc.webserver.XmlRpcServletServer.execute(XmlRpcServletServer.java:112)
        at 
org.apache.xmlrpc.webserver.XmlRpcServlet.doPost(XmlRpcServlet.java:196)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:91)
        at 
org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:77)
        at 
org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
        at 
org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49)
        at 
org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
        at 
org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48)
        at 
org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39)
        at 
org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:55)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:930)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405)
        at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
        at 
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

This exception can be was produced by the following XMLRPC request (using 
Apache XMLRPC)

<?xml version="1.0" 
encoding="UTF-8"?><methodCall><methodName>OntologyTranslatorController.translate</methodName><params><param><value><eu.monnetproject.ontology.Ontology><rdf:RDF
 xmlns:xsd="http://www.w3.org/2001/XMLSchema#"; 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"; 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"; 
xmlns:owl="http://www.w3.org/2002/07/owl#"; 
xmlns:dc="http://purl.org/dc/elements/1.1/";>

<rdf:Description rdf:about="http://www.fao.org/aims/aos/cwr.owl";>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Ontology"/>
        <rdfs:comment xml:lang="en">Added the French and Spanish translations 
of the terms coming from AGROVOC. [GS]</rdfs:comment>
        <rdfs:comment xml:lang="en">Last revised by AGPS and 
KCEW.</rdfs:comment>
        <owl:versionInfo 
rdf:datatype="http://www.w3.org/2001/XMLSchema#string";>20060614</owl:versionInfo>
 </rdf:Description>
</rdf:RDF></eu.monnetproject.ontology.Ontology></value></param></params></methodCall>

Is fixed by changing implementation of 
org.apache.ws.commons.util.NamespaceContextImpl.endPrefixMapping to:

    public void endPrefixMapping(String pPrefix) {
        if(pPrefix.equals(cachedPrefix)) {
                cachedPrefix = cachedURI = null;
        } else {
                for(int i = 0; i < prefixList.size(); i += 2) {
                        if(prefixList.get(i).equals(pPrefix)) {
                                prefixList.remove(i);
                                prefixList.remove(i);
                                return;
                        }
                }
                throw new IllegalStateException("The prefix " + pPrefix + " was 
not defined.");
        }
        
    }
    

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to