You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ov...@apache.org on 2002/02/13 02:47:12 UTC

cvs commit: xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap CocoonModule.java

ovidiu      02/02/12 17:47:12

  Added:       src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap
                        CocoonModule.java
  Log:
  Added. Common class for all the Schecoon SISC modules which implement
  native Scheme functions.
  
  Revision  Changes    Path
  1.1                  xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap/CocoonModule.java
  
  Index: CocoonModule.java
  ===================================================================
  package org.apache.cocoon.scheme.sitemap;
  
  import org.apache.avalon.framework.component.ComponentManager;
  import org.apache.avalon.framework.parameters.Parameters;
  import org.apache.cocoon.components.pipeline.StreamPipeline;
  import org.apache.cocoon.environment.Environment;
  import org.apache.cocoon.environment.Source;
  import sisc.ModuleAdapter;
  import sisc.data.Pair;
  import sisc.data.Value;
  import sisc.modules.J2S;
  
  public abstract class CocoonModule extends ModuleAdapter
  {
    static protected Parameters emptyParam = new Parameters();
  
    /**
     * Type cast function from a Scheme wrapper of a SchemeSitemap.
     *
     * @param scm a Scheme wrapper instance of a SchemeSitemap.
     * @return a <code>SchemeSitemap</code> value
     */
    static public SchemeSitemap schemeSitemap(Value scm)
    {
      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;
    }
  
    /**
     * 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;
    }
  
    /**
     * 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
     */
    static 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;
    }
  }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org