stephan     2002/06/24 09:26:15

  Modified:    src/scratchpad/src/org/apache/cocoon/components/source
                        LockableSource.java RestrictableSource.java
                        VersionableSource.java
               src/scratchpad/src/org/apache/cocoon/components/source/helpers
                        SourceProperty.java
               src/scratchpad/src/org/apache/cocoon/components/source/impl
                        SlideSource.java
               src/scratchpad/src/org/apache/cocoon/generation
                        SourceDescriptionGenerator.java
  Added:       src/scratchpad/src/org/apache/cocoon/components/source
                        SourceInspector.java TraversableSource.java
               src/scratchpad/src/org/apache/cocoon/components/source/impl
                        XPathSourceInspector.java
  Removed:     src/scratchpad/src/org/apache/cocoon/components/source
                        BrowseableSource.java
  Log:
  Implementation of a replacement for the several DirectoryGenerators through
  SourceInspectors.
  Clean up the SourceProperty.
  Renamed the BrowseableSource to TraversableSource, also added the method getParent
  to this Interface.
  
  Revision  Changes    Path
  1.2       +2 -2      
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/LockableSource.java
  
  Index: LockableSource.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/LockableSource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LockableSource.java       21 Jun 2002 13:39:42 -0000      1.1
  +++ LockableSource.java       24 Jun 2002 16:26:14 -0000      1.2
  @@ -65,7 +65,7 @@
   /**
    * A source, which could be locked
    *
  - * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
    * @version $Id$
    */
   public interface LockableSource extends Source {
  
  
  
  1.2       +2 -2      
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/RestrictableSource.java
  
  Index: RestrictableSource.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/RestrictableSource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RestrictableSource.java   21 Jun 2002 13:39:42 -0000      1.1
  +++ RestrictableSource.java   24 Jun 2002 16:26:14 -0000      1.2
  @@ -63,7 +63,7 @@
   /**
    * A source, which is restrictable, which means you need a username and password.
    *
  - * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
    * @version $Id$
    */
   public interface RestrictableSource extends Source {
  
  
  
  1.2       +2 -2      
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/VersionableSource.java
  
  Index: VersionableSource.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/VersionableSource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- VersionableSource.java    21 Jun 2002 13:39:43 -0000      1.1
  +++ VersionableSource.java    24 Jun 2002 16:26:15 -0000      1.2
  @@ -61,7 +61,7 @@
   /**
    * A source, which could exist in different versions
    *
  - * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
    * @version $Id$
    */
   public interface VersionableSource extends Source {
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/SourceInspector.java
  
  Index: SourceInspector.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.cocoon.components.source;
  
  import org.apache.avalon.framework.component.Component;
  
  import org.apache.excalibur.source.Source;
  import org.apache.excalibur.source.SourceException;
  
  import org.apache.cocoon.components.source.helpers.SourceProperty;
  
  /**
   * A source inspector helps to get properties from sources
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
   * @version $Id: SourceInspector.java,v 1.1 2002/06/24 16:26:14 stephan Exp $
   */
  public interface SourceInspector extends Component {
  
      public final static String ROLE = 
"org.apache.cocoon.components.source.SourceInspector";
  
      public SourceProperty getSourceProperty(Source source, String namespace, String 
name) 
          throws SourceException;
  
      public SourceProperty[] getSourceProperties(Source source) throws 
SourceException;
  
  }
  
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/TraversableSource.java
  
  Index: TraversableSource.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.cocoon.components.source;
  
  import org.apache.excalibur.source.Source;
  import org.apache.excalibur.source.SourceException;
  
  import java.util.Enumeration;
  
  /**
   * A source, which can a directory or collection of sources.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
   * @version $Id: TraversableSource.java,v 1.1 2002/06/24 16:26:15 stephan Exp $
   */
  public interface TraversableSource extends Source {
  
      /** 
       * If the source a directory or a collection
       */
      public boolean isSourceCollection() throws SourceException;
  
      /**
       * Returns the count of child sources.
       */
      public int getChildSourceCount()  throws SourceException;
  
      /**
       * Return the system id of a child source.
       *
       * @param index Index of the child
       */
      public String getChildSource(int index)  throws SourceException;
  
      /**
       * Return the system if of the parent source. The method should return
       * null if the source hasn't a parent. 
       */
      public String getParent();
  }
  
  
  
  
  1.2       +65 -15    
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/helpers/SourceProperty.java
  
  Index: SourceProperty.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/helpers/SourceProperty.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SourceProperty.java       21 Jun 2002 13:39:43 -0000      1.1
  +++ SourceProperty.java       24 Jun 2002 16:26:15 -0000      1.2
  @@ -55,10 +55,17 @@
   
   package org.apache.cocoon.components.source.helpers;
   
  +import org.apache.avalon.excalibur.xml.XMLizable;
  +
   import org.apache.cocoon.xml.dom.DOMBuilder;
  +import org.apache.cocoon.xml.dom.DOMStreamer;
  +
   import org.w3c.dom.Document;
   import org.w3c.dom.Element;
  +import org.w3c.dom.Node;
  +import org.w3c.dom.NodeList;
   
  +import org.xml.sax.ContentHandler;
   import org.xml.sax.SAXException;
   import org.xml.sax.helpers.AttributesImpl;
   
  @@ -66,10 +73,10 @@
   /**
    * This interface for a property of a source
    *
  - * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
    * @version $Id$
    */
  -public class SourceProperty {
  +public class SourceProperty implements XMLizable {
   
       private String namespace;
       private String name;
  @@ -94,12 +101,17 @@
        * @param name The name of the property
        * @param value The value of the property
        */
  -    /*public SourceProperty(String namespace, String name, String value) {
  +    public SourceProperty(String namespace, String name, String value) {
           this.namespace = namespace;
           this.name      = name;
  -        this.value     = value;
  -    }*/
  +        setValue(value);
  +    }
   
  +    /**
  +     * Creates a new property for a source
  +     *
  +     * @param property The property in DOM representation
  +     */
       public SourceProperty(Element property) {
           this.namespace = property.getNamespaceURI();
           this.name = property.getLocalName();
  @@ -154,6 +166,9 @@
               DOMBuilder builder = new DOMBuilder();
               builder.startDocument();
               builder.startElement(namespace, name, name, new AttributesImpl());
  +
  +            builder.characters(value.toCharArray(), 0, value.length());
  +
               builder.endElement(namespace, name, name);
               builder.endDocument();
   
  @@ -169,9 +184,17 @@
        * 
        * @return Value of the property
        */
  -    /*public String getValueAsString() {
  -        return this.value;
  -    }*/
  +    public String getValueAsString() {
  +
  +        NodeList nodeslist = this.value.getChildNodes();
  +        StringBuffer buffer = new StringBuffer();
  +        for(int i=0; i<nodeslist.getLength(); i++)
  +            if ((nodeslist.item(i).getNodeType()==Node.TEXT_NODE) || 
  +                (nodeslist.item(i).getNodeType()==Node.CDATA_SECTION_NODE))
  +                buffer.append(nodeslist.item(i).getNodeValue());
  +
  +        return buffer.toString();
  +    }
   
       /**
        * Sets the value of the property
  @@ -185,15 +208,42 @@
       }
   
       /**
  -     * Returns the value of the property
  -     * 
  -     * @return Value of the property
  +     * Sets the value of the property
  +     *
  +     * @param value Value of the property
        */
  -    /*public String getValueAsElement() {
  -        return this.value;
  -    }*/
  +    public void setValue(NodeList values) {
  +        try {
  +            DOMBuilder builder = new DOMBuilder();
  +            builder.startDocument();
  +            builder.startElement(namespace, name, name, new AttributesImpl());
  +
  +            DOMStreamer stream = new DOMStreamer(builder);
  +             for (int i = 0; i < values.getLength(); i++)
  +               stream.stream(values.item(i));
  +
  +            builder.endElement(namespace, name, name);
  +            builder.endDocument();
  +
  +            Document doc = builder.getDocument();
  +            this.value = doc.getDocumentElement();
  +        } catch (SAXException se) {
  +            // do nothing
  +        }
  +    }
   
       public Element getValue() {
           return this.value;
  +    }
  +
  +    /**
  +     * Generates SAX events representing the object's state.<br/>
  +     * <b>NOTE</b> : if the implementation can produce lexical events, care should 
be taken
  +     * that <code>handler</code> can actually be a {@link 
org.apache.cocoon.xml.XMLConsumer} that accepts such
  +     * events.
  +     */
  +    public void toSAX(ContentHandler handler) throws SAXException {
  +        DOMStreamer stream = new DOMStreamer(handler);
  +        stream.stream(this.value);
       }
   }
  
  
  
  1.3       +17 -3     
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/impl/SlideSource.java
  
  Index: SlideSource.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/impl/SlideSource.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SlideSource.java  22 Jun 2002 18:00:01 -0000      1.2
  +++ SlideSource.java  24 Jun 2002 16:26:15 -0000      1.3
  @@ -67,10 +67,10 @@
   import org.apache.avalon.framework.thread.ThreadSafe;
   
   import org.apache.cocoon.Constants;
  -import org.apache.cocoon.components.source.BrowseableSource;
   import org.apache.cocoon.components.source.InspectableSource;
   import org.apache.cocoon.components.source.LockableSource;
   import org.apache.cocoon.components.source.RestrictableSource;
  +import org.apache.cocoon.components.source.TraversableSource;
   import org.apache.cocoon.components.source.WriteableSource;
   import org.apache.cocoon.components.source.VersionableSource;
   import org.apache.cocoon.components.source.helpers.SourceCredential;
  @@ -131,7 +131,7 @@
    * @version $Id$
    */
   public class SlideSource extends AbstractLoggable implements 
  -      Source, WriteableSource, BrowseableSource, RestrictableSource, 
  +      Source, WriteableSource, TraversableSource, RestrictableSource, 
         LockableSource/*, InspectableSource*/, VersionableSource {
   
       /** Component manager */
  @@ -518,6 +518,20 @@
           } catch (SlideException se) {
               throw new SourceException("Could not get children", se);
           }
  +    }
  +
  +    /**
  +     * Return the system if of the parent source. The method should return
  +     * null if the source hasn't a parent. 
  +     */
  +    public String getParent() {
  +        if ((this.uri==null) || (this.uri.length()<=1))
  +            return null;
  +
  +        if (this.uri.endsWith("/"))
  +           return this.uri.substring(0, 
this.uri.substring(0,this.uri.length()-1).lastIndexOf("/"));
  +
  +        return this.uri.substring(0, this.uri.lastIndexOf("/"));
       }
   
       /** 
  
  
  
  1.1                  
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/components/source/impl/XPathSourceInspector.java
  
  Index: XPathSourceInspector.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.cocoon.components.source.impl;
  
  import org.apache.avalon.excalibur.xml.Parser;
  import org.apache.avalon.excalibur.xml.xpath.XPathProcessor;
  
  import org.apache.avalon.framework.activity.Startable;
  import org.apache.avalon.framework.component.ComponentException;
  import org.apache.avalon.framework.component.ComponentManager;
  import org.apache.avalon.framework.component.Composable;
  import org.apache.avalon.framework.logger.AbstractLoggable;
  import org.apache.avalon.framework.parameters.Parameters;
  import org.apache.avalon.framework.parameters.Parameterizable;
  import org.apache.avalon.framework.thread.ThreadSafe;
  
  import org.apache.excalibur.source.Source;
  import org.apache.excalibur.source.SourceException;
  
  import org.apache.cocoon.components.source.SourceInspector;
  import org.apache.cocoon.components.source.helpers.SourceProperty;
  
  import org.w3c.dom.Document;
  import org.w3c.dom.NodeList;
  
  import org.xml.sax.InputSource;
  import org.xml.sax.SAXException;
  
  import java.io.IOException;
  
  /**
   * This source inspector inspects XML files with a xpath expression
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Stephan Michels</a>
   * @version $Id: XPathSourceInspector.java,v 1.1 2002/06/24 16:26:15 stephan Exp $
   */
  public class XPathSourceInspector extends AbstractLoggable implements 
      SourceInspector, ThreadSafe, Parameterizable {
  
      private String propertynamespace = 
"http://xml.apache.org/cocoon/XPathSourceInspector";;
      private String propertyname = "result";
      private String extension = null;
      private String xpath = null;
  
      private ComponentManager manager = null;
  
      public void compose(ComponentManager manager) {
          this.manager = manager;
      }
  
      public void parameterize(Parameters params)  {
          this.propertynamespace = params.getParameter("namespace", 
              "http://xml.apache.org/cocoon/XPathSourceInspector";);
          this.propertyname = params.getParameter("name", "result");
          this.extension = params.getParameter("extension", ".xml");
          this.xpath = params.getParameter("xpath", "/*");
      }
  
      public SourceProperty getSourceProperty(Source source, String namespace, String 
name) 
          throws SourceException {
  
          if ((namespace.equals(propertynamespace)) && (name.equals(propertyname)) && 
              (source.getSystemId().endsWith(extension))) {
  
              Parser parser = null;
              Document doc = null;
              try { 
                  parser = (Parser)manager.lookup(Parser.ROLE);
  
                  doc = parser.parseDocument(new InputSource(source.getInputStream()));
              } catch (SAXException se) {
                  this.getLogger().error(source.getSystemId()
                                          + " is not a valid XML file");
              } catch (IOException ioe) {
                  this.getLogger().error("Could not read file", ioe);
              } catch (ComponentException ce) {
                  this.getLogger().error("Could not retrieve component", ce);
              } finally {
                  if (parser!=null)
                      this.manager.release(parser);
              }
  
              if (doc != null) {
  
                  XPathProcessor processor = null;
                  try {
                      processor = (XPathProcessor)manager.lookup(XPathProcessor.ROLE);
  
                      NodeList nodelist = 
processor.selectNodeList(doc.getDocumentElement(), this.xpath);
  
                      SourceProperty property = new 
SourceProperty(this.propertynamespace, this.propertyname);
                      property.setValue(nodelist);
  
                      return property;
                  } catch (ComponentException ce) {
                      this.getLogger().error("Could not retrieve component", ce);
                  } finally {
                      if (processor!=null)
                          this.manager.release(processor);
                  }
              }
          } 
          return null;  
      }
  
      public SourceProperty[] getSourceProperties(Source source) throws 
SourceException {
  
          SourceProperty property = getSourceProperty(source, this.propertynamespace, 
this.propertyname);
          if (property!=null)
              return new SourceProperty[]{property};
          return null;
      }
  
  }
  
  
  
  
  1.2       +5 -5      
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/generation/SourceDescriptionGenerator.java
  
  Index: SourceDescriptionGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/generation/SourceDescriptionGenerator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SourceDescriptionGenerator.java   21 Jun 2002 13:39:43 -0000      1.1
  +++ SourceDescriptionGenerator.java   24 Jun 2002 16:26:15 -0000      1.2
  @@ -65,7 +65,7 @@
   import org.apache.avalon.framework.parameters.Parameters;
   
   import org.apache.cocoon.ProcessingException;
  -import org.apache.cocoon.components.source.BrowseableSource;
  +import org.apache.cocoon.components.source.TraversableSource;
   import org.apache.cocoon.components.source.InspectableSource;
   import org.apache.cocoon.components.source.LockableSource;
   import org.apache.cocoon.components.source.RestrictableSource;
  @@ -199,8 +199,8 @@
                   pushSourcePermissions((RestrictableSource)source);*/
               if (source instanceof LockableSource)
                   pushSourceLocks((LockableSource)source);
  -            if ((source instanceof BrowseableSource) && (deep>0))
  -                pushSourceChilds((BrowseableSource)source, deep);
  +            if ((source instanceof TraversableSource) && (deep>0))
  +                pushSourceChilds((TraversableSource)source, deep);
               this.contentHandler.endElement(RDF_NS, DESCRIPTION_NODE_NAME, 
RDF_PREFIX+':'+DESCRIPTION_NODE_NAME);
           } catch (SAXException saxe) {
               throw saxe;
  @@ -209,7 +209,7 @@
           }
       }
   
  -    private void pushSourceChilds(BrowseableSource source, int deep) 
  +    private void pushSourceChilds(TraversableSource source, int deep) 
           throws SAXException, SourceException, ProcessingException, IOException {
   
           if (source.isSourceCollection()) {
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to