void enableJsp(final WebMetaData metadata) {
final ModelNode config = containerConfig.get(JSP_CONFIGURATION);
if (config.get(DISABLED).asBoolean(false)) {
return;
}
final ServletMetaData servlet = new ServletMetaData();
servlet.setName("jsp");
servlet.setLoadOnStartup("" + 3);
servlet.setServletClass("org.apache.jasper.servlet.JspServlet");
final List<ParamValueMetaData> initParams = new ArrayList<ParamValueMetaData>();
if (config.has(DEVELOPMENT)) {
initParams.add(createParameter("development", config.get(DEVELOPMENT).asString()));
} else {
initParams.add(createParameter("development", "false"));
}
if (config.has(KEEP_GENERATED)) {
initParams.add(createParameter("keepgenerated", config.get(KEEP_GENERATED).asString()));
} else {
initParams.add(createParameter("keepgenerated", "true"));
}
if (config.has(TRIM_SPACES)) {
initParams.add(createParameter("trimSpaces", config.get(TRIM_SPACES).asString()));
} else {
initParams.add(createParameter("trimSpaces", "false"));
}
if (config.has(TAG_POOLING)) {
initParams.add(createParameter("enablePooling", config.get(TAG_POOLING).asString()));
} else {
initParams.add(createParameter("enablePooling", "true"));
}
if (config.has(MAPPED_FILE)) {
initParams.add(createParameter("mappedfile", config.get(MAPPED_FILE).asString()));
} else {
initParams.add(createParameter("mappedfile", "true"));
}
if (config.has(CHECK_INTERVAL)) {
initParams.add(createParameter("checkInterval", config.get(CHECK_INTERVAL).asString()));
} else {
initParams.add(createParameter("checkInterval", "0"));
}
if (config.has(MODIFIFICATION_TEST_INTERVAL)) {
initParams.add(createParameter("modificationTestIntervale", config.get(MODIFIFICATION_TEST_INTERVAL).asString()));
} else {
initParams.add(createParameter("modificationTestInterval", "4"));
}
if (config.has(RECOMPILE_ON_FAIL)) {
initParams.add(createParameter("recompileOnFail", config.get(RECOMPILE_ON_FAIL).asString()));
} else {
initParams.add(createParameter("recompileOnFail", "false"));
}
if (config.has(SMAP)) {
initParams.add(createParameter("suppressSmap", config.get(SMAP).asString()));
} else {
initParams.add(createParameter("suppressSmap", "false"));
}
if (config.has(DUMP_SMAP)) {
initParams.add(createParameter("dumpSmap", config.get(DUMP_SMAP).asString()));
} else {
initParams.add(createParameter("dumpSmap", "false"));
}
if (config.has(GENERATE_STRINGS_AS_CHAR_ARRAYS)) {
initParams.add(createParameter("genStringAsCharArray", config.get(GENERATE_STRINGS_AS_CHAR_ARRAYS).asString()));
} else {
initParams.add(createParameter("genStringAsCharArray", "false"));
}
if (config.has(ERROR_ON_USE_BEAN_INVALID_CLASS_ATTRIBUTE)) {
initParams.add(createParameter("errorOnUseBeanInvalidClassAttribute", config.get(ERROR_ON_USE_BEAN_INVALID_CLASS_ATTRIBUTE).asString()));
} else {
initParams.add(createParameter("errorOnUseBeanInvalidClassAttribute", "false"));
}
if (config.has(SCRATCH_DIR)) {
initParams.add(createParameter("scratchdir", config.get(SCRATCH_DIR).asString()));
}
// jasper will find the right defaults.
if (config.has(SOURCE_VM)) {
initParams.add(createParameter("compilerSourceVM", config.get(SOURCE_VM).asString()));
} else {
initParams.add(createParameter("compilerSourceVM", "1.5"));
}
if (config.has(TARGET_VM)) {
initParams.add(createParameter("compilerTargetVM", config.get(TARGET_VM).asString()));
} else {
initParams.add(createParameter("compilerTargetVM", "1.5"));
}
if (config.has(JAVA_ENCODING)) {
initParams.add(createParameter("javaEncoding", config.get(JAVA_ENCODING).asString()));
} else
initParams.add(createParameter("javaEncoding", "UTF8"));
if (config.has(X_POWERED_BY)) {
initParams.add(createParameter("xpoweredBy", config.get(X_POWERED_BY).asString()));
} else {
initParams.add(createParameter("xpoweredBy", "true"));
}
if (config.has(DISPLAY_SOURCE_FRAGMENT)) {
initParams.add(createParameter("displaySourceFragment", config.get(DISPLAY_SOURCE_FRAGMENT).asString()));
} else {
initParams.add(createParameter("displaySourceFragment", "true"));
}
servlet.setInitParam(initParams);
metadata.getServlets().add(servlet);
addServletMapping("jsp", metadata, "*.jsp", "*.jspx");
}