balld       00/07/04 20:51:51

  Modified:    src/org/apache/cocoon/processor/xinclude
                        XIncludeProcessor.java
  Log:
  processor should now properly handle site-absolute links.
  
  Revision  Changes    Path
  1.9       +35 -29    
xml-cocoon/src/org/apache/cocoon/processor/xinclude/XIncludeProcessor.java
  
  Index: XIncludeProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon/src/org/apache/cocoon/processor/xinclude/XIncludeProcessor.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XIncludeProcessor.java    2000/06/29 06:17:49     1.8
  +++ XIncludeProcessor.java    2000/07/05 03:51:51     1.9
  @@ -37,6 +37,7 @@
   import org.apache.cocoon.framework.Director;
   import org.apache.cocoon.framework.Monitor;
   import org.apache.cocoon.processor.Processor;
  +import org.apache.cocoon.processor.ProcessorException;
   import org.apache.cocoon.Utils;
   
   /**
  @@ -44,7 +45,7 @@
    * from my XInclude filter for cocoon2.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
  - * @version CVS $Revision: 1.8 $ $Date: 2000/06/29 06:17:49 $ $Author: balld 
$
  + * @version CVS $Revision: 1.9 $ $Date: 2000/07/05 03:51:51 $ $Author: balld 
$
    */
   public class XIncludeProcessor extends AbstractActor implements Processor, 
Status {
   
  @@ -116,11 +117,13 @@
   
        Object monitor_key;
   
  +     HttpServletRequest request;
  +
        XIncludeProcessorWorker(XIncludeProcessor processor, Document document, 
Dictionary parameters) throws Exception {
                this.processor = processor;
                debug = processor.debug;
                this.document = document;
  -             HttpServletRequest request = 
(HttpServletRequest)parameters.get("request");
  +             request = (HttpServletRequest)parameters.get("request");
                monitor_key = Utils.encode(request);
                String basename = Utils.getBasename(request,context);
                base_file = new File((new File(basename)).getParent());
  @@ -216,33 +219,36 @@
                        suffix = href.substring(index+1);
                        href = href.substring(0,index);
                }
  -             Object object;
  +             Object content;
                String system_id;
  +             Object local;
                try {
  -                     URL url = new URL(href);
  -                     system_id = url.toString();
  -                     processor.monitored_table.put(monitor_key,"");
  -                     processor.monitor.watch(monitor_key,url);
  -                     object = url.getContent();
  -             } catch (MalformedURLException e) {
  -                     if (current_xmlbase_uri != null) {
  -                             URL url = new URL(current_xmlbase_uri,href);
  -                             system_id = url.toString();
  -                             processor.monitored_table.put(monitor_key,"");
  -                             processor.monitor.watch(monitor_key,url);
  -                             object = url.getContent();
  +                     if (href.charAt(0) == '/') {
  +                             local = new 
File(Utils.getRootpath(request,context)+href);
  +                             system_id = ((File)local).getAbsolutePath();
  +                             content = new FileReader((File)local);
  +                     } else if (href.indexOf("://") >= 0) {
  +                             local = new URL(href);
  +                             system_id = local.toString();
  +                             content = ((URL)local).getContent();
  +                     } else if (current_xmlbase_uri != null) {
  +                             local = new URL(current_xmlbase_uri,href);
  +                             system_id = local.toString();
  +                             content = ((URL)local).getContent();
                        } else {
  -                             File file = new File(base_file,href);
  -                             system_id = file.getAbsolutePath();
  -                             processor.monitored_table.put(monitor_key,"");
  -                             processor.monitor.watch(monitor_key,file);
  -                             object = new FileReader(file);
  +                             local = new 
File(Utils.getBasepath(request,context)+href);
  +                             system_id = local.toString();
  +                             content = ((URL)local).getContent();
                        }
  +                     processor.monitored_table.put(monitor_key,"");
  +                     processor.monitor.watch(monitor_key,local);
  +             } catch (MalformedURLException e) {
  +                     throw new ProcessorException("Could not include 
document: "+href+" is a malformed URL.");
                }
                Object result = null;
                if (parse.equals("text")) {
  -                     if (object instanceof Reader) {
  -                             Reader reader = (Reader)object;
  +                     if (content instanceof Reader) {
  +                             Reader reader = (Reader)content;
                                int read;
                                char ary[] = new char[1024];
                                StringBuffer sb = new StringBuffer();
  @@ -253,8 +259,8 @@
                                        reader.close();
                                }
                                result = document.createTextNode(sb.toString());
  -                     } else if (object instanceof InputStream) {
  -                             InputStream input = (InputStream)object;
  +                     } else if (content instanceof InputStream) {
  +                             InputStream input = (InputStream)content;
                                InputStreamReader reader = new 
InputStreamReader(input);
                                int read;
                                char ary[] = new char[1024];
  @@ -269,12 +275,12 @@
                        }
                } else if (parse.equals("xml")) {
                        InputSource input;
  -                     if (object instanceof Reader) {
  -                             input = new InputSource((Reader)object);
  -                     } else if (object instanceof InputStream) {
  -                             input = new InputSource((InputStream)object);
  +                     if (content instanceof Reader) {
  +                             input = new InputSource((Reader)content);
  +                     } else if (content instanceof InputStream) {
  +                             input = new InputSource((InputStream)content);
                        } else {
  -                             throw new Exception("Unknown object type: 
"+object);
  +                             throw new Exception("Unknown object type: 
"+content);
                        }
                        input.setSystemId(system_id);
                        Document included_document = null;
  
  
  

Reply via email to