You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-dev@jakarta.apache.org by pi...@apache.org on 2005/02/17 01:59:55 UTC

cvs commit: jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl EmptyOperator.java

pierred     2005/02/16 16:59:55

  Modified:    standard/src/org/apache/taglibs/standard/lang/jstl
                        EmptyOperator.java
  Log:
  Patch from Dhiru Pandey for bug #32755
  
  EmptyOperator does not evaluate instances of Collection
  
  Description:
  
  org.apache.taglibs.standard.lang.jstl.EmptyOperator is evaluating only List but
  not Collection instances. Any Collection different from List returns not empty.
  
  The fix is simple and proposed by the submitter of the bug Edgar Poce (edgarpoce@gmail.com)
  
  Revision  Changes    Path
  1.4       +186 -93   jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/EmptyOperator.java
  
  Index: EmptyOperator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/EmptyOperator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EmptyOperator.java	28 Feb 2004 01:01:42 -0000	1.3
  +++ EmptyOperator.java	17 Feb 2005 00:59:55 -0000	1.4
  @@ -12,96 +12,189 @@
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
  - */ 
  -
  -package org.apache.taglibs.standard.lang.jstl;
  -
  -import java.lang.reflect.Array;
  -import java.util.List;
  -import java.util.Map;
  -
  -/**
  - *
  - * <p>The implementation of the empty operator
  - * 
  - * @author Nathan Abramson - Art Technology Group
  - * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author$
  - **/
  -
  -public class EmptyOperator
  -  extends UnaryOperator
  -{
  -  //-------------------------------------
  -  // Singleton
  -  //-------------------------------------
  -
  -  public static final EmptyOperator SINGLETON =
  -    new EmptyOperator ();
  -
  -  //-------------------------------------
  -  /**
  -   *
  -   * Constructor
  -   **/
  -  public EmptyOperator ()
  -  {
  -  }
  -
  -  //-------------------------------------
  -  // Expression methods
  -  //-------------------------------------
  -  /**
  -   *
  -   * Returns the symbol representing the operator
  -   **/
  -  public String getOperatorSymbol ()
  -  {
  -    return "empty";
  -  }
  -
  -  //-------------------------------------
  -  /**
  -   *
  -   * Applies the operator to the given value
  -   **/
  -  public Object apply (Object pValue,
  -		       Object pContext,
  -		       Logger pLogger)
  -    throws ELException
  -  {
  -    // See if the value is null
  -    if (pValue == null) {
  -      return PrimitiveObjects.getBoolean (true);
  -    }
  -
  -    // See if the value is a zero-length String
  -    else if ("".equals (pValue)) {
  -      return PrimitiveObjects.getBoolean (true);
  -    }
  -
  -    // See if the value is a zero-length array
  -    else if (pValue.getClass ().isArray () &&
  -	     Array.getLength (pValue) == 0) {
  -      return PrimitiveObjects.getBoolean (true);
  -    }
  -
  -    // See if the value is an empty List
  -    else if (pValue instanceof List &&
  -	     ((List) pValue).isEmpty ()) {
  -      return PrimitiveObjects.getBoolean (true);
  -    }
  -
  -    // See if the value is an empty Map
  -    else if (pValue instanceof Map &&
  -	     ((Map) pValue).isEmpty ()) {
  -      return PrimitiveObjects.getBoolean (true);
  -    }
  -
  -    // Otherwise, not empty
  -    else {
  -      return PrimitiveObjects.getBoolean (false);
  -    }
  -  }
  -
  -  //-------------------------------------
  -}
  + */ 
  +
  +
  +
  +package org.apache.taglibs.standard.lang.jstl;
  +
  +
  +
  +import java.lang.reflect.Array;
  +
  +import java.util.Collection;
  +
  +import java.util.Map;
  +
  +
  +
  +/**
  +
  + *
  +
  + * <p>The implementation of the empty operator
  +
  + * 
  +
  + * @author Nathan Abramson - Art Technology Group
  +
  + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author$
  +
  + **/
  +
  +
  +
  +public class EmptyOperator
  +
  +  extends UnaryOperator
  +
  +{
  +
  +  //-------------------------------------
  +
  +  // Singleton
  +
  +  //-------------------------------------
  +
  +
  +
  +  public static final EmptyOperator SINGLETON =
  +
  +    new EmptyOperator ();
  +
  +
  +
  +  //-------------------------------------
  +
  +  /**
  +
  +   *
  +
  +   * Constructor
  +
  +   **/
  +
  +  public EmptyOperator ()
  +
  +  {
  +
  +  }
  +
  +
  +
  +  //-------------------------------------
  +
  +  // Expression methods
  +
  +  //-------------------------------------
  +
  +  /**
  +
  +   *
  +
  +   * Returns the symbol representing the operator
  +
  +   **/
  +
  +  public String getOperatorSymbol ()
  +
  +  {
  +
  +    return "empty";
  +
  +  }
  +
  +
  +
  +  //-------------------------------------
  +
  +  /**
  +
  +   *
  +
  +   * Applies the operator to the given value
  +
  +   **/
  +
  +  public Object apply (Object pValue,
  +
  +		       Object pContext,
  +
  +		       Logger pLogger)
  +
  +    throws ELException
  +
  +  {
  +
  +    // See if the value is null
  +
  +    if (pValue == null) {
  +
  +      return PrimitiveObjects.getBoolean (true);
  +
  +    }
  +
  +
  +
  +    // See if the value is a zero-length String
  +
  +    else if ("".equals (pValue)) {
  +
  +      return PrimitiveObjects.getBoolean (true);
  +
  +    }
  +
  +
  +
  +    // See if the value is a zero-length array
  +
  +    else if (pValue.getClass ().isArray () &&
  +
  +	     Array.getLength (pValue) == 0) {
  +
  +      return PrimitiveObjects.getBoolean (true);
  +
  +    }
  +
  +
  +
  +    // See if the value is an empty Collection
  +
  +    else if (pValue instanceof Collection &&
  +
  +	     ((Collection) pValue).isEmpty ()) {
  +
  +      return PrimitiveObjects.getBoolean (true);
  +
  +    }
  +
  +
  +
  +    // See if the value is an empty Map
  +
  +    else if (pValue instanceof Map &&
  +
  +	     ((Map) pValue).isEmpty ()) {
  +
  +      return PrimitiveObjects.getBoolean (true);
  +
  +    }
  +
  +
  +
  +    // Otherwise, not empty
  +
  +    else {
  +
  +      return PrimitiveObjects.getBoolean (false);
  +
  +    }
  +
  +  }
  +
  +
  +
  +  //-------------------------------------
  +
  +}
  +
  
  
  

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