You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ha...@apache.org on 2003/06/04 15:06:49 UTC

cvs commit: cocoon-2.1/src/java/org/apache/cocoon/components/modules/input BaseLinkModule.java

haul        2003/06/04 06:06:48

  Modified:    src/java/org/apache/cocoon/components/modules/input
                        BaseLinkModule.java
  Log:
  resolves bug 20297:
  [PATCH] Added RequestURI in addition to SitemapURI to BaseLinkModule
  by torstenknodt.at.datas-world.de (Torsten Knodt)
  
  Revision  Changes    Path
  1.2       +37 -35    cocoon-2.1/src/java/org/apache/cocoon/components/modules/input/BaseLinkModule.java
  
  Index: BaseLinkModule.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/modules/input/BaseLinkModule.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BaseLinkModule.java	17 May 2003 08:11:27 -0000	1.1
  +++ BaseLinkModule.java	4 Jun 2003 13:06:48 -0000	1.2
  @@ -53,7 +53,6 @@
   
   import java.util.Iterator;
   import java.util.LinkedList;
  -import java.util.List;
   import java.util.Map;
   import java.util.Vector;
   
  @@ -64,9 +63,9 @@
   
   /**
    * BaseLinkModule returns a relative link (<code>../</code>,
  - * <code>../../</code> etc) to the base of the current request URI.  For
  + * <code>../../</code> etc) to the base of the current request or sitemap URI.  For
    * instance, if called within a &lt;map:match pattern="a/b/c.xsp"> pipeline,
  - * <code>{baselink:}</code> would evaluate to <code>../../</code>.
  + * <code>{baselink:SitemapBaseLink}</code> would evaluate to <code>../../</code>.
    *
    * @author <a href="mailto:tk-cocoon@datas-world.de">Torsten Knodt</a>
    * based on RequestURIModule
  @@ -74,50 +73,53 @@
    */
   public class BaseLinkModule extends AbstractInputModule implements ThreadSafe {
   
  -
  -    final static Vector returnNames;
  -    static {
  -        Vector tmp = new Vector();
  -        tmp.add("baseLink");
  -        returnNames = tmp;
  -    }
  -
  -    public Object getAttribute( String name, Configuration modeConf, Map objectModel ) throws ConfigurationException {
  -
  -        String uri = ObjectModelHelper.getRequest(objectModel).getSitemapURI();
  -
  +    final static Vector returnNames = new Vector() {
  +            {
  +                add("RequestBaseLink");
  +                add("SitemapBaseLink");
  +            }
  +        };
  +    
  +    public Object getAttribute(final String name, final Configuration modeConf, final Map objectModel ) throws ConfigurationException {
  +        
  +	String uri;
  +	if (name.equals("SitemapBaseLink"))
  +            uri = ObjectModelHelper.getRequest(objectModel).getSitemapURI();
  +	else if (name.equals("RequestBaseLink"))
  +            uri = ObjectModelHelper.getRequest(objectModel).getRequestURI();
  +	else uri = "";
  +        
           if (uri.startsWith("/")) {
               uri = uri.substring(1);
           }
  -
  +        
           StringBuffer result = new StringBuffer(uri.length());
  -
  +        
           int nextIndex = 0;
           while ((nextIndex = uri.indexOf ('/', nextIndex) + 1) > 0) {
  -          result.append("../");
  +            result.append("../");
           }
  -
  +        
           if (getLogger().isDebugEnabled())
  -          getLogger().debug ("Returns " + result + " for uri " + uri);
  -
  +            getLogger().debug ("Returns " + result + " for uri " + uri + " and attribute " + name);
  +        
           return result.toString();
       }
  -
  -
  -    public Iterator getAttributeNames( Configuration modeConf, Map objectModel ) throws ConfigurationException {
  -
  +    
  +    
  +    public Iterator getAttributeNames(final Configuration modeConf, final Map objectModel) throws ConfigurationException {
  +        
           return RequestURIModule.returnNames.iterator();
       }
  -
  -
  -    public Object[] getAttributeValues( String name, Configuration modeConf, Map objectModel )
  +    
  +    public Object[] getAttributeValues(final String name, final Configuration modeConf, final Map objectModel )
           throws ConfigurationException {
  -
  -            List values = new LinkedList();
  -            values.add( this.getAttribute(name, modeConf, objectModel) );
  -
  -            return values.toArray();
  -            
  +        
  +        return (new LinkedList() {
  +                {
  +                    add(getAttribute(name, modeConf, objectModel) );
  +                }
  +            }).toArray();
       }
  -
  +    
   }