You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by ar...@apache.org on 2003/02/28 06:14:40 UTC

cvs commit: jakarta-struts/src/share/org/apache/struts/taglib/nested/logic NestedNotPresentTag.java NestedEqualTag.java NestedNotEmptyTag.java NestedGreaterThanTag.java NestedIterateTei.java NestedGreaterEqualTag.java NestedIterateTag.java NestedMessagesNotPresentTag.java NestedMatchTag.java NestedLessThanTag.java NestedPresentTag.java NestedNotMatchTag.java NestedMessagesPresentTag.java NestedNotEqualTag.java NestedLessEqualTag.java NestedEmptyTag.java

arron       2003/02/27 21:14:40

  Modified:    src/share/org/apache/struts/taglib/nested/logic
                        NestedNotPresentTag.java NestedEqualTag.java
                        NestedNotEmptyTag.java NestedGreaterThanTag.java
                        NestedIterateTei.java NestedGreaterEqualTag.java
                        NestedIterateTag.java
                        NestedMessagesNotPresentTag.java
                        NestedMatchTag.java NestedLessThanTag.java
                        NestedPresentTag.java NestedNotMatchTag.java
                        NestedMessagesPresentTag.java
                        NestedNotEqualTag.java NestedLessEqualTag.java
                        NestedEmptyTag.java
  Log:
  Logic Nested Tag Clases
  - Most importantly, updated the Copyright to
    include 2003.
  - Secondly, rejig of the nested tags to allow
    them to dance with Tomcat 4.1.18
  
  Revision  Changes    Path
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedNotPresentTag.java
  
  Index: NestedNotPresentTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedNotPresentTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedNotPresentTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedNotPresentTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.NotPresentTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedNotPresentTag extends NotPresentTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +48 -37    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedEqualTag.java
  
  Index: NestedEqualTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedEqualTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedEqualTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedEqualTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,12 +59,12 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.EqualTag;
   import org.apache.struts.taglib.nested.NestedNameSupport;
   import org.apache.struts.taglib.nested.NestedPropertyHelper;
  -import org.apache.struts.taglib.nested.NestedPropertySupport;
   
   /**
    * NestedEqualTag.
  @@ -73,8 +73,8 @@
    * @since Struts 1.1
    * @version $Revision$ $Date$
    */
  -public class NestedEqualTag extends EqualTag implements NestedPropertySupport, NestedNameSupport {
  -  
  +public class NestedEqualTag extends EqualTag implements NestedNameSupport {
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -82,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
  -}
  \ No newline at end of file
  +}
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedNotEmptyTag.java
  
  Index: NestedNotEmptyTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedNotEmptyTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedNotEmptyTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedNotEmptyTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.NotEmptyTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedNotEmptyTag extends NotEmptyTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedGreaterThanTag.java
  
  Index: NestedGreaterThanTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedGreaterThanTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedGreaterThanTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedGreaterThanTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.GreaterThanTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedGreaterThanTag extends GreaterThanTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.5       +5 -5      jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedIterateTei.java
  
  Index: NestedIterateTei.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedIterateTei.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NestedIterateTei.java	16 Nov 2002 04:41:28 -0000	1.4
  +++ NestedIterateTei.java	28 Feb 2003 05:14:39 -0000	1.5
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedGreaterEqualTag.java
  
  Index: NestedGreaterEqualTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedGreaterEqualTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedGreaterEqualTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedGreaterEqualTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.GreaterEqualTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedGreaterEqualTag extends GreaterEqualTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.7       +107 -84   jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedIterateTag.java
  
  Index: NestedIterateTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedIterateTag.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- NestedIterateTag.java	16 Nov 2002 04:41:28 -0000	1.6
  +++ NestedIterateTag.java	28 Feb 2003 05:14:39 -0000	1.7
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,16 +59,13 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  -import java.util.Map;
  -
  +import java.util.*;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.IterateTag;
   import org.apache.struts.taglib.nested.NestedNameSupport;
  -import org.apache.struts.taglib.nested.NestedParentSupport;
   import org.apache.struts.taglib.nested.NestedPropertyHelper;
  -import org.apache.struts.taglib.nested.NestedReference;
   
   /**
    * NestedIterateTag.
  @@ -79,21 +76,7 @@
    * @since Struts 1.1
    * @version $Revision$ $Date$
    */
  -public class NestedIterateTag extends IterateTag implements NestedParentSupport, NestedNameSupport {
  -  
  -  
  -  /**
  -   * The only added property to the class. For use in proper nesting.
  -   * @return String value of the property and the current index.
  -   */
  -  public String getNestedProperty() {
  -    Object idObj = pageContext.getAttribute(id);
  -    if (idObj instanceof Map.Entry) {
  -      return property + "("+ ((Map.Entry)idObj).getKey() +")";
  -    } else {
  -      return property + "["+ this.getIndex() +"]";
  -    }
  -  }
  +public class NestedIterateTag extends IterateTag implements NestedNameSupport {
   
     /**
      * Overriding method of the heart of the matter. Gets the relative property
  @@ -102,53 +85,57 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    
  -    /* Set the id. Had to be set to the property originally anyways. */
  -    if (id == null || id.trim().length() <= 0) {
  -      id = property;
  +    // original values
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // set the ID to make the super tag happy
  +    if (id == null || id.trim().length() == 0) { id = property; }
  +
  +    // the request object
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +
  +    // original nesting details
  +    originalNesting = NestedPropertyHelper.getCurrentProperty(request);
  +    originalNestingName = NestedPropertyHelper.getCurrentName(request, this);
  +
  +    // set the bean if it's been provided
  +    // (the bean that's been provided! get it!?... nevermind)
  +    if (getName() == null) {
  +      // the qualified nesting value
  +      nesting = NestedPropertyHelper.getAdjustedProperty(request, getProperty());
  +    } else {
  +      // it's just the property
  +      nesting = getProperty();
       }
  -    
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    
  -    /* get the original result */
  +
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // get the original result
       int temp = super.doStartTag();
  -    
  -    /* set the include reference */
  -    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  -    currentReference = new NestedReference(getName(), getNestedProperty());
  -    originalReference = NestedPropertyHelper.setIncludeReference(request,
  -            currentReference);
  -    
  -    /* return the result */
  +
  +    // set the new reference (including the index etc)
  +    NestedPropertyHelper.setName(request, getName());
  +    NestedPropertyHelper.setProperty(request, deriveNestedProperty());
  +
  +    // return the result
       return temp;
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * The only added property to the class. For use in proper nesting.
  +   * @return String value of the property and the current index or mapping.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  +  private String deriveNestedProperty() {
  +    Object idObj = pageContext.getAttribute(id);
  +    if (idObj instanceof Map.Entry) {
  +      return nesting + "("+ ((Map.Entry)idObj).getKey() +")";
  +    } else {
  +      return nesting + "["+ this.getIndex() +"]";
       }
     }
  -  
  -  
  +
     /**
      * This is only overriden as the include reference will need it's index
      * updated.
  @@ -156,30 +143,66 @@
      * @return int JSP continuation directive.
      */
     public int doAfterBody() throws JspException {
  -    /* store original result */
  +    // store original result
       int temp = super.doAfterBody();
  -    
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
       if (temp != SKIP_BODY) {
  -      /* set the new reference */
  -      currentReference.setNestedProperty(getNestedProperty());
  -    } else {
  -      /* all done. clean up */
  -      currentReference = null;
  -      
  -      HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  -      NestedPropertyHelper.setIncludeReference(request, originalReference);
  -      originalReference = null;    
  +      // set the new reference
  +      NestedPropertyHelper.setProperty(request, deriveNestedProperty());
       }
  -    
  -    /* return super result */
  +    // return super result
       return temp;
     }
  -  
  -  /* hold original property */
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // the super's thing
  +    int i = super.doEndTag();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // reset the original tag values
  +    super.setName(originalName);
  +    super.setProperty(originalProperty);
  +
  +    // reset the original nesting values
  +    if (originalNesting == null) {
  +      NestedPropertyHelper.deleteReference(request);
  +    } else {
  +      NestedPropertyHelper.setProperty(request, originalNesting);
  +      NestedPropertyHelper.setName(request, originalNestingName);
  +    }
  +    // job done
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
  +   */
  +  public void release() {
  +    // let the super release
  +    super.release();
  +    // reset the original value place holders
  +    originalName = null;
  +    originalProperty = null;
  +    originalNesting = null;
  +    originalNestingName = null;
  +  }
  +
  +
  +  // The current nesting
  +  private String nesting = null;
  +
  +  // original tag properties
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
  -  
  -  /* includes nested references */
  -  private NestedReference originalReference;
  -  private NestedReference currentReference;
  +
  +  // original nesting environment
  +  private String originalNesting = null;
  +  private String originalNestingName = null;
   }
  
  
  
  1.4       +49 -36    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedMessagesNotPresentTag.java
  
  Index: NestedMessagesNotPresentTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedMessagesNotPresentTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedMessagesNotPresentTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedMessagesNotPresentTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,11 +59,12 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.MessagesNotPresentTag;
  +import org.apache.struts.taglib.nested.NestedNameSupport;
   import org.apache.struts.taglib.nested.NestedPropertyHelper;
  -import org.apache.struts.taglib.nested.NestedPropertySupport;
   
   /**
    * NestedMessagesNotPresentTag.
  @@ -73,8 +74,9 @@
    * @since Struts 1.1
    * @version $Revision$ $Date$
    */
  -public class NestedMessagesNotPresentTag extends MessagesNotPresentTag implements NestedPropertySupport {
  -  
  +public class NestedMessagesNotPresentTag extends MessagesNotPresentTag
  +                                                  implements NestedNameSupport {
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -82,37 +84,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedMatchTag.java
  
  Index: NestedMatchTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedMatchTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedMatchTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedMatchTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.MatchTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedMatchTag extends MatchTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedLessThanTag.java
  
  Index: NestedLessThanTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedLessThanTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedLessThanTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedLessThanTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.LessThanTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedLessThanTag extends LessThanTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedPresentTag.java
  
  Index: NestedPresentTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedPresentTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedPresentTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedPresentTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.PresentTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedPresentTag extends PresentTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedNotMatchTag.java
  
  Index: NestedNotMatchTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedNotMatchTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedNotMatchTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedNotMatchTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.NotMatchTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedNotMatchTag extends NotMatchTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +49 -36    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedMessagesPresentTag.java
  
  Index: NestedMessagesPresentTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedMessagesPresentTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedMessagesPresentTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedMessagesPresentTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,11 +59,12 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.MessagesPresentTag;
  +import org.apache.struts.taglib.nested.NestedNameSupport;
   import org.apache.struts.taglib.nested.NestedPropertyHelper;
  -import org.apache.struts.taglib.nested.NestedPropertySupport;
   
   /**
    * NestedMessagesPresentTag.
  @@ -73,8 +74,9 @@
    * @since Struts 1.1
    * @version $Revision$ $Date$
    */
  -public class NestedMessagesPresentTag extends MessagesPresentTag implements NestedPropertySupport {
  -  
  +public class NestedMessagesPresentTag extends MessagesPresentTag
  +                                                  implements NestedNameSupport {
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -82,37 +84,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedNotEqualTag.java
  
  Index: NestedNotEqualTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedNotEqualTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedNotEqualTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedNotEqualTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.NotEqualTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedNotEqualTag extends NotEqualTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedLessEqualTag.java
  
  Index: NestedLessEqualTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedLessEqualTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedLessEqualTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedLessEqualTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.LessEqualTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedLessEqualTag extends LessEqualTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  
  1.4       +46 -34    jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedEmptyTag.java
  
  Index: NestedEmptyTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/nested/logic/NestedEmptyTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NestedEmptyTag.java	16 Nov 2002 04:41:28 -0000	1.3
  +++ NestedEmptyTag.java	28 Feb 2003 05:14:39 -0000	1.4
  @@ -6,7 +6,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -59,6 +59,7 @@
    */
   package org.apache.struts.taglib.nested.logic;
   
  +import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   
   import org.apache.struts.taglib.logic.EmptyTag;
  @@ -73,7 +74,7 @@
    * @version $Revision$ $Date$
    */
   public class NestedEmptyTag extends EmptyTag implements NestedNameSupport {
  -  
  +
     /**
      * Overriding method of the heart of the matter. Gets the relative property
      * and leaves the rest up to the original tag implementation. Sweet.
  @@ -81,37 +82,48 @@
      *             This is in the hands of the super class.
      */
     public int doStartTag() throws JspException {
  -    
  -    /* singleton tag implementations will need the original property to be
  -       set before running */
  -    super.setProperty(originalProperty);
  -    
  -    /* let the NestedHelper set the properties it can */
  -    isNesting = true;
  -    NestedPropertyHelper.setNestedProperties(this);
  -    isNesting = false;
  -    
  -    /* do the tag */
  +    // get the original properties
  +    originalName = getName();
  +    originalProperty = getProperty();
  +
  +    // request
  +    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  +    // set the properties
  +    NestedPropertyHelper.setNestedProperties(request, this);
  +
  +    // let the super do it's thing
       return super.doStartTag();
     }
  -  
  -  /** this is overridden so that properties being set by the JSP page aren't
  -   * written over by those needed by the extension. If the tag instance is
  -   * re-used by the JSP, the tag can set the property back to that set by the
  -   * JSP page.
  -   *
  -   * @param newProperty new property value
  +
  +  /**
  +   * Complete the processing of the tag. The nested tags here will restore
  +   * all the original value for the tag itself and the nesting context.
  +   * @return int to describe the next step for the JSP processor
  +   * @throws JspException for the bad things JSP's do
  +   */
  +  public int doEndTag() throws JspException {
  +    // do the super's ending part
  +    int i = super.doEndTag();
  +
  +    // reset the properties
  +    setName(originalName);
  +    setProperty(originalProperty);
  +
  +    // continue
  +    return i;
  +  }
  +
  +  /**
  +   * Release the tag's resources and reset the values.
      */
  -  public void setProperty(String newProperty) {
  -    /* let the real tag do its thang */
  -    super.setProperty(newProperty);
  -    /* if it's the JSP setting it, remember the value */
  -    if (!isNesting) {
  -      originalProperty = newProperty;
  -    }
  +  public void release() {
  +    super.release();
  +    // reset the originals
  +    originalName = null;
  +    originalProperty = null;
     }
  -  
  -  /* hold original property */
  +
  +  /* the usual private member variables */
  +  private String originalName = null;
     private String originalProperty = null;
  -  private boolean isNesting = false;
   }
  
  
  

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