Bug 39212 - a bug in example code DummyCart.java
Summary: a bug in example code DummyCart.java
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 5
Classification: Unclassified
Component: Webapps:Examples (show other bugs)
Version: 5.5.15
Hardware: PC Windows 2000
: P2 normal (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-04-05 10:20 UTC by Jessica Hsu
Modified: 2007-07-30 11:13 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jessica Hsu 2006-04-05 10:20:19 UTC
Hi!
I found a bug in the example code DummyCart.java
Your code:

/*
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* 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 sessions;

import javax.servlet.http.*;
import java.util.Vector;
import java.util.Enumeration;

public class DummyCart {
    Vector v = new Vector();
    String submit = null;
    String item = null;
   
    private void addItem(String name) {
    v.addElement(name);
    }

    private void removeItem(String name) {
    v.removeElement(name);
    }

    public void setItem(String name) {
    item = name;
    }
   
    public void setSubmit(String s) {
    submit = s;
    }

    public String[] getItems() {
    String[] s = new String[ v.size()];
    v.copyInto(s);
    return s;
    }
   
    public void processRequest(HttpServletRequest request) {
    // null value for submit - user hit enter instead of clicking on
    // "add" or "remove"
    if (submit == null)
        addItem(item);

    if (submit.equals("add"))
        addItem(item);
    else if (submit.equals("remove"))
        removeItem(item);
   
    // reset at the end of the request
    reset();
    }

    // reset
    private void reset() {
    submit = null;
    item = null;
    }
}

1. the argument request in method processRequest does nothing.
2. see this code block:
    // null value for submit - user hit enter instead of clicking on
    // "add" or "remove"
    if (submit == null)
        addItem(item);

    if (submit.equals("add"))
        addItem(item);
    else if (submit.equals("remove"))
        removeItem(item);

there is a logical bug in it.
It should be:
    if (submit == null || submit.equals("add")) addItem(item);
    elseif (submit.equals("remove")) removeItem(item);

because if submit == null is true: the original code will yield an
NullPointerException.
under the condition submit == null, submit.equals("add") will not work properly.
Comment 1 Yoav Shapira 2006-04-13 21:31:10 UTC
If you could submit this in diff -u format (see
http://jakarta.apache.org/site/source.html#Patches for instructions), that'd be
great.  Thanks!
Comment 2 Mark Thomas 2007-07-30 11:13:16 UTC
This has been fixed in svn for 5.5.x and 6.0.x and will be included in the next
release of each.

Thanks for the report.