ovidiu      02/02/12 17:55:34

  Modified:    src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap
                        SchemeSitemapFunctions.java
  Log:
  (read-resource): New native Scheme function.
  
  Moved all the cast functions in CocoonModule.
  
  Revision  Changes    Path
  1.3       +27 -141   
xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap/SchemeSitemapFunctions.java
  
  Index: SchemeSitemapFunctions.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap/SchemeSitemapFunctions.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SchemeSitemapFunctions.java       1 Feb 2002 01:41:54 -0000       1.2
  +++ SchemeSitemapFunctions.java       13 Feb 2002 01:55:34 -0000      1.3
  @@ -11,6 +11,7 @@
   import sisc.ContinuationException;
   import sisc.Interpreter;
   import sisc.ModuleAdapter;
  +import sisc.data.ImmutableString;
   import sisc.data.Pair;
   import sisc.data.Symbol;
   import sisc.data.Value;
  @@ -99,7 +100,7 @@
    * @see org.apache.cocoon.components.pipeline.StreamPipeline
    * @see org.apache.cocoon.reading.Reader
    */
  -public class SchemeSitemapFunctions extends ModuleAdapter
  +public class SchemeSitemapFunctions extends CocoonModule
   {
     public String getModuleName()
     {
  @@ -117,9 +118,8 @@
       TRANSFORM = 3,
       SERIALIZE = 4,
       PROCESS = 5,
  -    PARSE = 6;
  -
  -  protected Parameters emptyParam = new Parameters();
  +    PARSE = 6,
  +    LOAD_SCHEME = 7;
   
     /**
      * Creates a new <code>SchemeSitemapFunctions</code> instance. Defines
  @@ -133,6 +133,7 @@
       define("sitemap:serialize", SERIALIZE);
       define("sitemap:process", PROCESS);
       define("sitemap:parse", PARSE);
  +    define("sitemap:read-resource", LOAD_SCHEME);
     }
   
     /**
  @@ -143,18 +144,20 @@
      * @param primid an <code>int</code> value
      * @param r an <code>Interpreter</code> value
      * @return a <code>Value</code> value
  +   * @exception ContinuationException if an error occurs
      */
     public Value eval(int primid, Interpreter r)
       throws ContinuationException
     {
       try {
         switch (r.vlr.length) {
  -
           // Two argument functions
         case 2:
           switch (primid) {
           case PARSE:
             return parse(r.vlr[0], r.vlr[1]);
  +        case LOAD_SCHEME:
  +          return readResource(r.vlr[0], r.vlr[1]);
           }
   
           // Three argument functions
  @@ -187,146 +190,29 @@
     }
   
     /**
  -   * Type cast function from a Scheme wrapper of a SchemeSitemap.
  +   * Read a resource from the current Web application and return its
  +   * content as a Scheme <code>ImmutableString</code>.
      *
  -   * @param scm a Scheme wrapper instance of a SchemeSitemap.
  -   * @return a <code>SchemeSitemap</code> value
  -   */
  -  static public SchemeSitemap schemeSitemap(Value scm)
  +   * @param sManager a <code>Value</code> wrapper for an Avalon
  +   * <code>ComponentManager</code>
  +   * @param ssource a Scheme <code>String</code> string representing
  +   * the name of the resource to read.
  +   * @return a Scheme <code>ImmutableString</code> value, containing
  +   * the Scheme representation of the XML document read from
  +   * <code>ssource</code>
  +   * @exception Exception if an error occurs during reading of the
  +   * resource
  +   */
  +  public Value readResource(Value scm, Value ssource)
  +    throws Exception
     {
  -    try {
  -      return (SchemeSitemap)(((J2S.JavaObject)scm).o);
  -    }
  -    catch (ClassCastException ex) {
  -      typeError("SchemeSitemap", scm);
  -    }
  -    return null;
  -  }
  -
  -  /**
  -   * Type cast function from a Scheme wrapper of an Environment
  -   * instance.
  -   *
  -   * @param scm a Scheme wrapper of an Environment instance.
  -   * @return an <code>Environment</code> value
  -   */
  -  static public Environment environment(Value scm)
  -  {
  -    try {
  -      return (Environment)(((J2S.JavaObject)scm).o);
  -    }
  -    catch (ClassCastException ex) {
  -      typeError("Environment", scm);
  -    }
  -    return null;
  -  }
  +    SchemeSitemap sitemap = schemeSitemap(scm);
  +    String source = string(ssource);
   
  -  /**
  -   * Type cast function from a Scheme wrapper of an StreamPipeline
  -   * instance.
  -   *
  -   * @param scm a Scheme wrapper of an StreamPipeline instance.
  -   * @return an <code>StreamPipeline</code> value
  -   */
  -  static public StreamPipeline streamPipeline(Value scm)
  -  {
  -    try {
  -      return (StreamPipeline)(((J2S.JavaObject)scm).o);
  -    }
  -    catch (ClassCastException ex) {
  -      typeError("StreamPipeline", scm);
  -    }
  -    return null;
  +    String content = sitemap.readResource(source);
  +    return new ImmutableString(content);
     }
  -
  -  /**
  -   * Type cast function from a Scheme wrapper of
  -   * <code>ComponentManager</code> instance.
  -   *
  -   * @param scm a Scheme wrapper of a Cocoon
  -   * <code>ComponentManager</code> instance.
  -   * @return an <code>ComponentManager</code> value
  -   */
  -  static public ComponentManager componentManager(Value scm)
  -  {
  -    try {
  -      return (ComponentManager)(((J2S.JavaObject)scm).o);
  -    }
  -    catch (ClassCastException ex) {
  -      typeError("ComponentManager", scm);
  -    }
  -    return null;
  -  }
  -
  -  /**
  -   * Type cast function from a Scheme wrapper of a Cocoon
  -   * <code>Source</code> instance.
  -   *
  -   * @param scm a Scheme wrapper of a Cocoon <code>Source</code>
  -   * instance.
  -   * @return an <code>Source</code> value
  -   */
  -  static public Source source(Value scm)
  -  {
  -    try {
  -      return (Source)(((J2S.JavaObject)scm).o);
  -    }
  -    catch (ClassCastException ex) {
  -      typeError("Source", scm);
  -    }
  -    return null;
  -  }
  -
  -  /**
  -   * Retrieve an entry from an association list. Uses eq? to compare
  -   * the CAR of each entry.
  -   *
  -   * @param l the association list
  -   * @param v the value to be searched for
  -   * @return a <code>Pair</code> value representing the entry, or
  -   * <tt>FALSE</tt> if no such entry is present.
  -   */
  -  static public Value assq (Value l, Value v)
  -  {
  -    Pair list = pair(l);
  -    while (list != EMPTYLIST) {
  -      Pair entry = pair(list.car);
  -      if (entry.car.eq(v))
  -        return entry;
  -      list = pair(list.cdr);
  -    }
  -    return FALSE;
  -  }
  -
  -  /**
  -   * Assumes the <tt>sparams</tt> is either an association list or the
  -   * FALSE value. It returns either an empty Avalon
  -   * <tt>Parameters</tt> instance, or a <tt>Parameters</tt> instance
  -   * that contains the values extracted from the association list.
  -   *
  -   * @param sparams a <code>Value</code> value, either <tt>FALSE</tt>
  -   * or an association list
  -   * @return an Avalon <code>Parameters</code> instance
  -   */
  -  public Parameters getParameters(Value sparams)
  -  {
  -    Parameters params = emptyParam;
  -
  -    if (!sparams.eq(FALSE)) {
  -      params = new Parameters();
  -      Pair sparamValues = pair(pair(sparams).cdr);
  -      while (sparamValues != EMPTYLIST) {
  -        Pair entry = pair(sparamValues.car);
  -        String name = string(entry.car);
  -        String value = string(entry.cdr);
  -        params.setParameter(name, value);
  -        sparamValues = pair(sparamValues.cdr);
  -      }
  -    }
  -
  -    return params;
  -  }
  -
  +  
     /**
      * <p>Creates a new pipeline instance, and a new Generator
      * instance. Adds the Generator to the pipeline.
  
  
  

----------------------------------------------------------------------
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