[361774] pageContext.request.secure raises validation error
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java
index ec996ff..58be039 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2010 BEA Systems and others.
+ * Copyright (c) 2005, 2011 BEA Systems and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,10 +17,12 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 
 import org.eclipse.core.filebuffers.ITextFileBuffer;
 import org.eclipse.core.resources.IFile;
@@ -94,8 +96,11 @@
 	private static final String fJspImplicitMaps[] = { 	"param", "paramValues", "header", "headerValues", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 														"cookie", "initParam", "pageScope", "requestScope", "sessionScope",  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
 														"applicationScope" }; //$NON-NLS-1$
+
+	private static final String fHttpServletRequestBooleanMethodNames[] = {"requestedSessionIdFromCookie", "requestedSessionIdFromUrl", "requestedSessionIdFromURL", "requestedSessionIdValid", "userInRole", "secure"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
 	
 	private static final HashMap fJSPImplicitObjectMap = new HashMap(fJspImplicitObjects.length);
+	private static final Set fHttpServletRequestBooleanMethods = new HashSet(fHttpServletRequestBooleanMethodNames.length);
 	static {
 		for(int i = 0; i < fJspImplicitObjects.length; i++) {
 			fJSPImplicitObjectMap.put(fJspImplicitObjects[i], new Boolean(true));
@@ -104,8 +109,13 @@
 		for(int i = 0; i < fJspImplicitMaps.length; i++) {
 			fJSPImplicitObjectMap.put(fJspImplicitMaps[i], new Boolean(false));
 		}
+
+		for (int i = 0; i < fHttpServletRequestBooleanMethodNames.length; i++) {
+			fHttpServletRequestBooleanMethods.add(fHttpServletRequestBooleanMethodNames[i]);
+		}
 	}
-	
+	private static final byte[] HTTP_REQUEST = new byte[0];
+
 	private static final String fFooter = " );" + ENDL + "}" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$
 
 	private StringBuffer fResult;
@@ -459,6 +469,7 @@
 				//content assist can cause a null pointer here without the extra null check
 				if(prefix.firstToken.image.equals("pageContext") && suffix.getPropertyNameToken() != null && suffix.getPropertyNameToken().image.equals("request")) {
 					append("((HttpServletRequest)");
+					data = HTTP_REQUEST;
 				}
 			}
 		}
@@ -509,10 +520,15 @@
 			// This is a special case.  Note that the type system, no matter how much type information
 			// we would have wouldn't give us the correct result.  We're looking for "pageContext.request" 
 			// here and will add a downcast to (HTTPServletRequest)
-			
+			String prefix = "get"; //$NON-NLS-1$
 			append(node.firstToken);
-			append("get" + ucaseName + "()", suffix); //$NON-NLS-1$ //$NON-NLS-2$
-			
+			if (data == HTTP_REQUEST && !"request".equals(suffix.image)) { //$NON-NLS-1$
+				if (fHttpServletRequestBooleanMethods.contains(suffix.image)) {
+					prefix = "is"; //$NON-NLS-1$
+				}
+			}
+			append(prefix + ucaseName + "()", suffix); //$NON-NLS-1$
+
 			SimpleNode parent = (SimpleNode) node.jjtGetParent();
 			if(suffix.image.equals("request") && parent instanceof ASTValue && //$NON-NLS-1$
 					parent.jjtGetParent() instanceof ASTUnaryExpression && parent.firstToken.image.equals("pageContext")) { //$NON-NLS-1$