diff --git a/com.ibm.wala.j2ee/lib/wala.j2ee.jar.model b/com.ibm.wala.j2ee/lib/wala.j2ee.jar.model index 2a70dc359..081000aea 100644 Binary files a/com.ibm.wala.j2ee/lib/wala.j2ee.jar.model and b/com.ibm.wala.j2ee/lib/wala.j2ee.jar.model differ diff --git a/com.ibm.wala.j2ee/src/com/ibm/wala/model/javax/servlet/ServletRequest.java b/com.ibm.wala.j2ee/src/com/ibm/wala/model/javax/servlet/ServletRequest.java index 417947c35..e2100b1ab 100644 --- a/com.ibm.wala.j2ee/src/com/ibm/wala/model/javax/servlet/ServletRequest.java +++ b/com.ibm.wala.j2ee/src/com/ibm/wala/model/javax/servlet/ServletRequest.java @@ -17,26 +17,34 @@ import javax.servlet.ServletInputStream; import com.ibm.wala.model.SyntheticFactory; public class ServletRequest implements javax.servlet.ServletRequest { + private final java.util.Hashtable values = new java.util.Hashtable(); - private final java.util.Hashtable parameters = new java.util.Hashtable(); + + private java.util.Hashtable parameters; + private String encoding = "iso88591-1"; + // lazily initialize bogus model of parameters + private void initParameters() { + parameters = new java.util.Hashtable(); + parameters.put(getInputString(), getInputString()); + } + /** * The semantics of this are bogus ... be careful to hijack this. */ protected static String getInputString() { return "some input string"; } - + /** * The semantics of this are bogus ... be careful to hijack this. */ public ServletRequest() { - parameters.put(getInputString(), getInputString()); } public Object getAttribute(String name) { - if (name.length() > 5) { // random condition. + if (name.length() > 5) { // random condition. return values.get(name); } else { return SyntheticFactory.getObject(); @@ -68,7 +76,7 @@ public class ServletRequest implements javax.servlet.ServletRequest { int n = s.charAt(0); return n; } - + }; } @@ -80,9 +88,11 @@ public class ServletRequest implements javax.servlet.ServletRequest { public java.util.Enumeration getLocales() { return new java.util.Enumeration() { private boolean done = false; + public boolean hasMoreElements() { return !done; } + public Object nextElement() { done = true; return getLocale(); @@ -92,22 +102,25 @@ public class ServletRequest implements javax.servlet.ServletRequest { public String getParameter(String name) { // Note, while the following is technically a more accurate model... -// return parameters.get(name); + // return parameters.get(name); // I'm using the following simpler model for now to avoid some unnecessary analysis - // of flow through the heap. Revisit this decision if necessary. + // of flow through the heap. Revisit this decision if necessary. return getInputString(); } public java.util.Map getParameterMap() { + initParameters(); return parameters; } public java.util.Enumeration getParameterNames() { + initParameters(); return parameters.keys(); } public String[] getParameterValues(String name) { - return new String[] {parameters.get(name)}; + initParameters(); + return new String[] { parameters.get(name) }; } public java.lang.String getProtocol() { diff --git a/com.ibm.wala.j2ee/src/com/ibm/wala/model/javax/servlet/http/HttpServletRequest.java b/com.ibm.wala.j2ee/src/com/ibm/wala/model/javax/servlet/http/HttpServletRequest.java index 980b7834d..14005fb65 100644 --- a/com.ibm.wala.j2ee/src/com/ibm/wala/model/javax/servlet/http/HttpServletRequest.java +++ b/com.ibm.wala.j2ee/src/com/ibm/wala/model/javax/servlet/http/HttpServletRequest.java @@ -18,11 +18,16 @@ import com.ibm.wala.annotations.Internal; public class HttpServletRequest extends com.ibm.wala.model.javax.servlet.ServletRequest implements javax.servlet.http.HttpServletRequest { - private final java.util.Hashtable headers = new java.util.Hashtable(); + private java.util.Hashtable headers; + // lazily initialize bogus model of headers + private void initHeaders() { + headers = new java.util.Hashtable(); + headers.put(getInputString(), getInputString()); + } + public HttpServletRequest() { super(); - headers.put(getInputString(), getInputString()); } public String getAuthType() { @@ -45,14 +50,17 @@ public class HttpServletRequest } public String getHeader(String name) { + initHeaders(); return headers.get(name); } public java.util.Enumeration getHeaderNames() { + initHeaders(); return headers.keys(); } public java.util.Enumeration getHeaders(String name) { + initHeaders(); return headers.elements(); }