You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by jv...@apache.org on 2001/08/08 16:00:38 UTC

cvs commit: jakarta-turbine/src/tool/org/apache/turbine/tool ContentURI.java OMTool.java IntakeTool.java UIManager.java

jvanzyl     01/08/08 07:00:38

  Modified:    src/tool/org/apache/turbine/tool IntakeTool.java
                        UIManager.java
  Added:       src/tool/org/apache/turbine/tool ContentURI.java OMTool.java
  Log:
  - double checking
  
  Revision  Changes    Path
  1.2       +7 -6      jakarta-turbine/src/tool/org/apache/turbine/tool/IntakeTool.java
  
  Index: IntakeTool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine/src/tool/org/apache/turbine/tool/IntakeTool.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IntakeTool.java	2001/08/08 13:44:13	1.1
  +++ IntakeTool.java	2001/08/08 14:00:38	1.2
  @@ -1,4 +1,4 @@
  -package org.apache.turbine.services.intake;
  +package org.apache.turbine.tool;
   
   /* ====================================================================
    * The Apache Software License, Version 1.1
  @@ -60,19 +60,20 @@
   import java.util.Iterator;
   import java.util.List;
   import java.util.Map;
  +import org.apache.fulcrum.Log;
  +import org.apache.fulcrum.pool.Recyclable;
   import org.apache.torque.om.Retrievable;
  +import org.apache.turbine.RunData;
  +import org.apache.turbine.ParameterParser;
   import org.apache.turbine.services.intake.model.Group;
  +import org.apache.turbine.services.intake.TurbineIntake;
   import org.apache.turbine.services.pull.ApplicationTool;
  -import org.apache.fulcrum.Log;
  -import org.apache.turbine.ParameterParser;
  -import org.apache.turbine.RunData;
  -import org.apache.fulcrum.pool.Recyclable;
   
   /**
    * A Pull tool to make intake objects available to a template
    *
    * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a>
  - * @version $Id: IntakeTool.java,v 1.1 2001/08/08 13:44:13 jvanzyl Exp $
  + * @version $Id: IntakeTool.java,v 1.2 2001/08/08 14:00:38 jvanzyl Exp $
    */
   public class IntakeTool 
       implements ApplicationTool, Recyclable
  
  
  
  1.2       +1 -2      jakarta-turbine/src/tool/org/apache/turbine/tool/UIManager.java
  
  Index: UIManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine/src/tool/org/apache/turbine/tool/UIManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UIManager.java	2001/08/08 13:40:34	1.1
  +++ UIManager.java	2001/08/08 14:00:38	1.2
  @@ -58,7 +58,6 @@
   import java.util.Hashtable;
   import java.util.Properties;
   import org.apache.turbine.Turbine;
  -import org.apache.turbine.util.ContentURI;
   import org.apache.turbine.util.Log;
   import org.apache.turbine.RunData;
   import org.apache.turbine.services.pull.ApplicationTool;
  @@ -101,7 +100,7 @@
    *
    * @author <a href="mailto:jvanzyl@periapt.com">Jason van Zyl</a>
    * @author <a href="mailto:james_coltman@majorband.co.uk">James Coltman</a>
  - * @version $Id: UIManager.java,v 1.1 2001/08/08 13:40:34 jvanzyl Exp $
  + * @version $Id: UIManager.java,v 1.2 2001/08/08 14:00:38 jvanzyl Exp $
    */
   public class UIManager implements ApplicationTool
   {
  
  
  
  1.1                  jakarta-turbine/src/tool/org/apache/turbine/tool/ContentURI.java
  
  Index: ContentURI.java
  ===================================================================
  package org.apache.turbine.tool;
  
  /* ====================================================================
   * 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" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", 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/>.
   */
  
  import java.lang.reflect.Method;
  import org.apache.turbine.RunData;
  import org.apache.turbine.util.DynamicURI;
  import org.apache.turbine.services.pull.ApplicationTool;
  
  /**
   * Utility class to allow the easy inclusion of
   * images in templates: &lt;img src="$content.getURI("image.jpg")">
   *
   * @author <a href="mailto:criley@ekmail.com">Cameron Riley</a>
   * @author <a href="mailto:jvanzyl@periapt.com">Jason van Zyl</a>
   * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
   * @version $Id: ContentURI.java,v 1.1 2001/08/08 14:00:38 jvanzyl Exp $
   */
  public class ContentURI
      extends DynamicURI
      implements ApplicationTool
  {
      /** stores the context path for servlet 2.1+ compliant containers */
      private String contextPath;
  
      /**
       * Constructor
       *
       * @param data a RunData instance
       */
      public ContentURI (RunData data)
      {
          super(data);
          init(data);
      }
  
      /**
       * Default constructor
       */
      public ContentURI ()
      {
      }
  
      /**
       * Initialize this object using the data given (ApplicationTool
       * method).
       *
       * @param data assumed to be a RunData instance
       */
      public void init(Object data)
      {
          // we blithely cast to RunData as the runtime error thrown
          // if data is null or another type is appropriate.
          init((RunData)data);
      }
  
      /**
       * Refresh method - does nothing
       */
      public void refresh()
      {
          // empty
      }
  
      /**
       * Initialize this object using the given RunData object
       *
       * @param data a RunData instance
       */
      public void init(RunData data)
      {
          super.init(data);
          try
          {
              Class runDataClass = RunData.class;
              Method meth = runDataClass.getDeclaredMethod("getContextPath", null);
              contextPath = (String)meth.invoke(data, null);
          }
          catch (Exception e)
          {
              /*
               * Ignore a NoSuchMethodException because it means we are
               * using Servlet API 2.0.  Make sure scriptName is not
               * null.
               */
              contextPath = "";
          }
      }
  
      /**
       * Returns a URI pointing to the given content (where content is a
       * path relative to the webapp root.
       *
       * @param pathToContent a path relative to the webapp root
       */
      public String getURI(String pathToContent)
      {
          StringBuffer sb = new StringBuffer();
          sb.append (getServerScheme()); //http
          sb.append ("://");
          sb.append (getServerName()); //www.foo.com
          sb.append (":");
          sb.append (getServerPort()); //port webserver running on (8080 for TDK)
          //the context for tomcat adds a / so no need to add another
          sb.append (contextPath); //the tomcat context
          sb.append ("/");
          sb.append (pathToContent);
          return (sb.toString());
      }
  }
  
  
  
  1.1                  jakarta-turbine/src/tool/org/apache/turbine/tool/OMTool.java
  
  Index: OMTool.java
  ===================================================================
  package org.apache.turbine.tool;
  
  /* ====================================================================
   * 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" and "Apache Software Foundation" and 
   *    "Apache Turbine" must not be used to endorse or promote products 
   *    derived from this software without prior written permission. For 
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Turbine", 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/>.
   */
  
  import java.util.HashMap;
  import java.util.Map;
  import org.apache.turbine.Turbine;
  import org.apache.turbine.RunData;
  import org.apache.commons.util.StringUtils;
  import org.apache.turbine.util.ParameterParser;
  import org.apache.turbine.util.Log;
  import org.apache.turbine.TurbineException;
  import org.apache.turbine.services.pull.ApplicationTool;
  import org.apache.fulcrum.pool.Recyclable;
  import org.apache.torque.om.RetrieverFactory;
  
  /**
   * A Pull tool to make om objects available to a template
   *
   * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a>
   * @version $Id: OMTool.java,v 1.1 2001/08/08 14:00:38 jvanzyl Exp $
   */
  public class OMTool 
      implements ApplicationTool, Recyclable
  {
      // private RunData data;
      private HashMap omMap;
  
      // note the following could be a static attribute to reduce memory
      // footprint. Might require a service to front load the
      // PullHelpers to avoid MT issues. A multiple write is not so bad 
      // though
  
      /** The cache of PullHelpers. **/
      private static Map pullMap = new HashMap();
  
      /**
       *  The Factory responsible for retrieving the 
       *  objects from storage
       */
      private RetrieverFactory omFactory;
  
      public OMTool()
          throws Exception
      {
          omMap = new HashMap();
          String className = Turbine.getConfiguration().getString("tool.om.factory");
          //        RetrieverFactory omFactory = 
          //            (RetrieverFactory)Class.forName(className).newInstance();
      }
  
      /**
       * Prepares tool for a single request
       */
      public void init(Object runData)
      {
          // data = (RunData)runData;
      }
  
      /**
       * Implementation of ApplicationTool interface is not needed for this
       * method as the tool is request scoped
       */
      public void refresh()
      {
          // empty
      }
  
      /**
       * Inner class to present a nice interface to the template designer
       */
      private class PullHelper
      {
          String omName;
  
          private PullHelper(String omName)
          {
              this.omName = omName;
          }
  
          public Object setKey(String key)
              throws Exception
          {
              Object om = null;
  
              String inputKey = omName + key;
              if ( omMap.containsKey(inputKey) ) 
              {
                  om = omMap.get(inputKey);
              }
              else 
              {
                  om = omFactory.getInstance(omName).retrieve(key);
                  omMap.put(inputKey, om);
              }
  
              return om;
          }
      }
  
      public Object get(String omName)
          throws Exception
      {
          if ( !pullMap.containsKey(omName) ) 
          {
              // MT could overwrite a PullHelper, but that is not a problem
              // should still synchronize to avoid two threads adding at 
              // same time
              synchronized (this.getClass())
              {
                  pullMap.put(omName, new OMTool.PullHelper(omName));
              }
          }
          
          return pullMap.get(omName);
      }
  
      public Object get(String omName, String key)
          throws Exception
      {
          return ((OMTool.PullHelper)get(omName)).setKey(key);
      }
  
  
      public String getName()
      {
          return "om";
      }
  
  
      // ****************** Recyclable implementation ************************
  
      private boolean disposed;
  
      /**
       * Recycles the object for a new client. Recycle methods with
       * parameters must be added to implementing object and they will be
       * automatically called by pool implementations when the object is
       * taken from the pool for a new client. The parameters must
       * correspond to the parameters of the constructors of the object.
       * For new objects, constructors can call their corresponding recycle
       * methods whenever applicable.
       * The recycle methods must call their super.
       */
      public void recycle()
      {
          disposed = false;
      }
  
      /**
       * Disposes the object after use. The method is called
       * when the object is returned to its pool.
       * The dispose method must call its super.
       */
      public void dispose()
      {
          omMap.clear(); 
          // data = null;
  
          disposed = true;
      }
  
      /**
       * Checks whether the recyclable has been disposed.
       * @return true, if the recyclable is disposed.
       */
      public boolean isDisposed()
      {
          return disposed;
      }
  
  }
  
  
  
  
  
  
  
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org