deweese     2002/08/01 13:24:32

  Modified:    sources/org/apache/batik/dom/util SAXDocumentFactory.java
               sources/org/apache/batik/util ParsedURL.java
                        ParsedURLData.java
                        ParsedURLDefaultProtocolHandler.java
  Log:
  1) Fixed a bug in reading XML documents that do not have an expected namespace
     on the root element.
  2) Fixed a bug in URL parsing for fragments with no base document.
  
  Revision  Changes    Path
  1.14      +22 -5     
xml-batik/sources/org/apache/batik/dom/util/SAXDocumentFactory.java
  
  Index: SAXDocumentFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/dom/util/SAXDocumentFactory.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SAXDocumentFactory.java   24 Jul 2002 01:19:31 -0000      1.13
  +++ SAXDocumentFactory.java   1 Aug 2002 20:24:32 -0000       1.14
  @@ -290,9 +290,26 @@
           }
   
   
  -        if ((!docElem.getNamespaceURI().equals(nsURI)) ||
  -            (!docElem.getLocalName().equals(lname))) {
  -            throw new IOException("Root element does not match requested 
Document.");
  +        String docElemNS = docElem.getNamespaceURI();
  +        if ((docElemNS != nsURI) &&
  +            ((docElemNS == null) || (!docElemNS.equals(nsURI))))
  +            throw new IOException
  +                ("Root element namespace does not match that requested:\n" +
  +                 "Requested: " + nsURI + "\n" +
  +                 "Found: " + docElemNS);
  +
  +        if (docElemNS != null) {
  +            if (!docElem.getLocalName().equals(lname))
  +                throw new IOException
  +                    ("Root element does not match that requested:\n" +
  +                     "Requested: " + lname + "\n" +
  +                     "Found: " + docElem.getLocalName());
  +        } else {
  +            if (!docElem.getNodeName().equals(lname))
  +                throw new IOException
  +                    ("Root element does not match that requested:\n" +
  +                     "Requested: " + lname + "\n" +
  +                     "Found: " + docElem.getNodeName());
           }
   
           return ret;
  @@ -457,7 +474,7 @@
               while (i.hasNext()) {
                   PreInfo pi = (PreInfo)i.next();
                   Node n = pi.createNode(document);
  -             document.insertBefore(n, e);
  +                document.insertBefore(n, e);
               }
               preInfo = null;
           } else {
  
  
  
  1.14      +2 -1      xml-batik/sources/org/apache/batik/util/ParsedURL.java
  
  Index: ParsedURL.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/ParsedURL.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ParsedURL.java    11 Jul 2002 16:26:20 -0000      1.13
  +++ ParsedURL.java    1 Aug 2002 20:24:32 -0000       1.14
  @@ -199,6 +199,7 @@
        */
       public ParsedURL(URL baseURL, String urlStr) {
           this.userAgent = getGlobalUserAgent();
  +        
           if (baseURL != null)
               this.data = parseURL(new ParsedURL(baseURL), urlStr);
           else
  
  
  
  1.8       +13 -7     xml-batik/sources/org/apache/batik/util/ParsedURLData.java
  
  Index: ParsedURLData.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/ParsedURLData.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ParsedURLData.java        11 Jul 2002 16:26:20 -0000      1.7
  +++ ParsedURLData.java        1 Aug 2002 20:24:32 -0000       1.8
  @@ -124,18 +124,24 @@
        * URL.
        */
       protected URL buildURL() throws MalformedURLException {
  -        String file = "";
  -        if (path != null) 
  -            file = path;
   
           // System.out.println("File: " + file);
           // if (ref != null)
           //     file += "#" + ref;
  +        // System.out.println("Building: " + protocol + " - " + 
  +        //                     host + " - " + path);
   
  -        if (port == -1)
  -            return new URL(protocol, host, file);
  +        if ((protocol != null) && (host != null)) {
  +            String file = "";
  +            if (path != null) 
  +                file = path;
  +            if (port == -1)
  +                return new URL(protocol, host, file);
   
  -        return new URL(protocol, host, port, file);
  +            return new URL(protocol, host, port, file);
  +        }
  +
  +        return new URL(toString());
       }
   
       /**
  
  
  
  1.9       +23 -20    
xml-batik/sources/org/apache/batik/util/ParsedURLDefaultProtocolHandler.java
  
  Index: ParsedURLDefaultProtocolHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/util/ParsedURLDefaultProtocolHandler.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ParsedURLDefaultProtocolHandler.java      5 Jun 2002 21:14:48 -0000       1.8
  +++ ParsedURLDefaultProtocolHandler.java      1 Aug 2002 20:24:32 -0000       1.9
  @@ -75,6 +75,7 @@
           }
   
           // new Exception("Custom Parse: " + urlStr).printStackTrace();
  +        // System.out.println("Custom Parse: " + urlStr);
   
           ParsedURLData ret = constructParsedURLData();
   
  @@ -82,6 +83,16 @@
   
           int pidx=0, idx;
           int len = urlStr.length();
  +
  +        // Pull fragement id off first...
  +        idx = urlStr.indexOf('#');
  +        ret.ref = null;
  +        if (idx != -1) {
  +            if (idx+1 < urlStr.length())
  +                ret.ref = urlStr.substring(idx+1);
  +            urlStr = urlStr.substring(0,idx);
  +        }
  +
           String prefix = urlStr;
           if ((idx = prefix.indexOf('/')) != -1)
               // Only check for ':' prior to first '/'
  @@ -110,22 +121,19 @@
               // No slashes (apache.org) or a double slash 
               // (//apache.org/....) so
               // we should have host[:port] before next slash.
  -
  -            if (idx != -1) 
  +            if (idx != -1)
                   pidx+=2;  // Skip double slash...
   
               idx = urlStr.indexOf('/', pidx);  // find end of host:Port spec
               String hostPort;
  -            if (idx == -1) 
  +            if (idx == -1)
                   // Just host and port nothing following...
                   hostPort = urlStr.substring(pidx);
               else
                   // Path spec follows...
                   hostPort = urlStr.substring(pidx, idx);
   
  -            hostPort = hostPort;
  -
  -            pidx = idx;  // Remember location of '/'
  +            int hidx = idx;  // Remember location of '/'
   
               // pull apart host and port number...
               idx = hostPort.indexOf(':');
  @@ -150,23 +158,18 @@
                       }
                   }
               }
  +            if (((ret.host == null) || (ret.host.indexOf('.') == -1)) &&
  +                (ret.port == -1))
  +                // no '.' in a host spec??? and no port, probably
  +                // just a path.
  +                ret.host = null;
  +            else
  +                pidx = hidx;
           }
   
           if ((pidx == -1) || (pidx >= len)) return ret; // Nothing follows
   
  -        String pathRef = urlStr.substring(pidx);
  -        pathRef = pathRef;
  -
  -        idx = pathRef.indexOf('#');
  -        ret.ref = null;
  -        if (idx == -1) {
  -            // No ref (fragment) in URL
  -            ret.path = pathRef;
  -        } else {
  -            ret.path = pathRef.substring(0,idx);
  -            if (idx+1 < pathRef.length())
  -                ret.ref = pathRef.substring(idx+1);
  -        }
  +        ret.path = urlStr.substring(pidx);
           return ret;
       }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to