String value = attrs.getValue(i);
if ("language".equals(attr))
{
if (languageSeen)
throw new JspToJavaException(n.getStart(), "Multiple languages");
languageSeen = true;
if (!"java".equalsIgnoreCase(value))
throw new JspToJavaException(n.getStart(), "Nonjava language");
pageInfo.setLanguage(value);
}
else if ("extends".equals(attr))
{
if (extendsSeen)
throw new JspToJavaException(n.getStart(), "Multiple extends");
extendsSeen = true;
pageInfo.setExtends(value);
/*
* If page superclass is top level class (i.e. not in a
* pkg) explicitly import it. If this is not done, the
* compiler will assume the extended class is in the same
* pkg as the generated servlet.
*/
if (value.indexOf('.') < 0)
n.addImport(value);
}
else if ("contentType".equals(attr))
{
if (contentTypeSeen)
throw new JspToJavaException(n.getStart(), "Multiple contenttypes");
contentTypeSeen = true;
pageInfo.setContentType(value);
}
else if ("session".equals(attr))
{
if (sessionSeen)
throw new JspToJavaException(n.getStart(), "Multiple sessions");
sessionSeen = true;
if ("true".equalsIgnoreCase(value))
pageInfo.setSession(true);
else if ("false".equalsIgnoreCase(value))
pageInfo.setSession(false);
else
throw new JspToJavaException(n.getStart(), "Invalid session");
}
else if ("buffer".equals(attr))
{
if (bufferSeen)
throw new JspToJavaException(n.getStart(), "Multiple buffers");
bufferSeen = true;
if ("none".equalsIgnoreCase(value))
pageInfo.setBuffer(0);
else
{
if (value == null || !value.endsWith("kb"))
throw new JspToJavaException(n.getStart(), "Invalid buffer");
try
{
Integer k = new Integer(value.substring(0, value.length()-2));
pageInfo.setBuffer(k.intValue()*1024);
}
catch (NumberFormatException e)
{
System.out.println("NumberFormatException in Validator");
throw new JspToJavaException(n.getStart(), "Invalid buffer");
}
}
}
else if ("autoFlush".equals(attr))
{
if (autoFlushSeen)
throw new JspToJavaException(n.getStart(), "Multiple autoflush");
autoFlushSeen = true;
if ("true".equalsIgnoreCase(value))
pageInfo.setAutoFlush(true);
else if ("false".equalsIgnoreCase(value))
pageInfo.setAutoFlush(false);
else
throw new JspToJavaException(n.getStart(), "Autoflush invalid");
}
else if ("isthreadSafe".equals(attr))
{
if (isThreadSafeSeen)
throw new JspToJavaException(n.getStart(), "Multiple isThreadsafe");
isThreadSafeSeen = true;
if ("true".equalsIgnoreCase(value))
pageInfo.setThreadSafe(true);
else if ("false".equalsIgnoreCase(value))
pageInfo.setThreadSafe(false);
else
throw new JspToJavaException(n.getStart(), "isThreadSafe invalid");
}
else if ("isErrorPage".equals(attr))
{
if (isErrorPageSeen)
throw new JspToJavaException(n.getStart(), "Multiple isErrorPage");
isErrorPageSeen = true;
if ("true".equalsIgnoreCase(value))
pageInfo.setIsErrorPage(true);
else if ("false".equalsIgnoreCase(value))
pageInfo.setIsErrorPage(false);
else
throw new JspToJavaException(n.getStart(), "isErrorPage invalid");
}
else if ("errorPage".equals(attr))
{
if (errorPageSeen)
throw new JspToJavaException(n.getStart(), "Multiple errorpage");
errorPageSeen = true;
pageInfo.setErrorPage(value);
}
else if ("info".equals(attr))
{
if (infoSeen)
throw new JspToJavaException(n.getStart(), "Multiple info");
infoSeen = true;
}
else if ("pageEncoding".equals(attr))
{
if (pageEncodingSeen)
throw new JspToJavaException(n.getStart(), "Multiple page encodings");
pageEncodingSeen = true;
pageInfo.setPageEncoding(value);
}
}
// Check for bad combinations
if (pageInfo.getBuffer() == 0 && !pageInfo.isAutoFlush())
throw new JspToJavaException(n.getStart(), "Bad combo");
// Attributes for imports for this node have been processed by
// the parsers, just add them to pageInfo.
pageInfo.addImports(n.getImports());