use of jakarta.servlet.SessionTrackingMode in project spring-security by spring-projects.
the class AbstractSecurityWebApplicationInitializerTests method onStartupWhenSessionTrackingModesConfiguredThenUsed.
@Test
public void onStartupWhenSessionTrackingModesConfiguredThenUsed() {
ServletContext context = mock(ServletContext.class);
FilterRegistration.Dynamic registration = mock(FilterRegistration.Dynamic.class);
ArgumentCaptor<DelegatingFilterProxy> proxyCaptor = ArgumentCaptor.forClass(DelegatingFilterProxy.class);
given(context.addFilter(eq("springSecurityFilterChain"), proxyCaptor.capture())).willReturn(registration);
ArgumentCaptor<Set<SessionTrackingMode>> modesCaptor = ArgumentCaptor.forClass(new HashSet<SessionTrackingMode>() {
}.getClass());
willDoNothing().given(context).setSessionTrackingModes(modesCaptor.capture());
new AbstractSecurityWebApplicationInitializer() {
@Override
public Set<SessionTrackingMode> getSessionTrackingModes() {
return Collections.singleton(SessionTrackingMode.SSL);
}
}.onStartup(context);
assertProxyDefaults(proxyCaptor.getValue());
Set<SessionTrackingMode> modes = modesCaptor.getValue();
assertThat(modes).hasSize(1);
assertThat(modes).containsExactly(SessionTrackingMode.SSL);
}
use of jakarta.servlet.SessionTrackingMode in project tomcat by apache.
the class WebXml method toXml.
/**
* Generate a web.xml in String form that matches the representation stored
* in this object.
*
* @return The complete contents of web.xml as a String
*/
public String toXml() {
StringBuilder sb = new StringBuilder(2048);
// TODO - Various, icon, description etc elements are skipped - mainly
// because they are ignored when web.xml is parsed - see above
// NOTE - Elements need to be written in the order defined in the 2.3
// DTD else validation of the merged web.xml will fail
// NOTE - Some elements need to be skipped based on the version of the
// specification being used. Version is validated and starts at
// 2.2. The version tests used in this method take advantage of
// this.
// Declaration
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
// Root element
if (publicId != null) {
sb.append("<!DOCTYPE web-app PUBLIC\n");
sb.append(" \"");
sb.append(publicId);
sb.append("\"\n");
sb.append(" \"");
if (XmlIdentifiers.WEB_22_PUBLIC.equals(publicId)) {
sb.append(XmlIdentifiers.WEB_22_SYSTEM);
} else {
sb.append(XmlIdentifiers.WEB_23_SYSTEM);
}
sb.append("\">\n");
sb.append("<web-app>");
} else {
String javaeeNamespace = null;
String webXmlSchemaLocation = null;
String version = getVersion();
if ("2.4".equals(version)) {
javaeeNamespace = XmlIdentifiers.JAVAEE_1_4_NS;
webXmlSchemaLocation = XmlIdentifiers.WEB_24_XSD;
} else if ("2.5".equals(version)) {
javaeeNamespace = XmlIdentifiers.JAVAEE_5_NS;
webXmlSchemaLocation = XmlIdentifiers.WEB_25_XSD;
} else if ("3.0".equals(version)) {
javaeeNamespace = XmlIdentifiers.JAVAEE_6_NS;
webXmlSchemaLocation = XmlIdentifiers.WEB_30_XSD;
} else if ("3.1".equals(version)) {
javaeeNamespace = XmlIdentifiers.JAVAEE_7_NS;
webXmlSchemaLocation = XmlIdentifiers.WEB_31_XSD;
} else if ("4.0".equals(version)) {
javaeeNamespace = XmlIdentifiers.JAVAEE_8_NS;
webXmlSchemaLocation = XmlIdentifiers.WEB_40_XSD;
} else if ("5.0".equals(version)) {
javaeeNamespace = XmlIdentifiers.JAKARTAEE_9_NS;
webXmlSchemaLocation = XmlIdentifiers.WEB_50_XSD;
} else if ("6.0".equals(version)) {
javaeeNamespace = XmlIdentifiers.JAKARTAEE_10_NS;
webXmlSchemaLocation = XmlIdentifiers.WEB_60_XSD;
}
sb.append("<web-app xmlns=\"");
sb.append(javaeeNamespace);
sb.append("\"\n");
sb.append(" xmlns:xsi=");
sb.append("\"http://www.w3.org/2001/XMLSchema-instance\"\n");
sb.append(" xsi:schemaLocation=\"");
sb.append(javaeeNamespace);
sb.append(' ');
sb.append(webXmlSchemaLocation);
sb.append("\"\n");
sb.append(" version=\"");
sb.append(getVersion());
sb.append("\"");
if ("2.4".equals(version)) {
sb.append(">\n\n");
} else {
sb.append("\n metadata-complete=\"true\">\n\n");
}
}
appendElement(sb, INDENT2, "display-name", displayName);
if (isDistributable()) {
sb.append(" <distributable/>\n\n");
}
for (Map.Entry<String, String> entry : contextParams.entrySet()) {
sb.append(" <context-param>\n");
appendElement(sb, INDENT4, "param-name", entry.getKey());
appendElement(sb, INDENT4, "param-value", entry.getValue());
sb.append(" </context-param>\n");
}
sb.append('\n');
// Filters were introduced in Servlet 2.3
if (getMajorVersion() > 2 || getMinorVersion() > 2) {
for (Map.Entry<String, FilterDef> entry : filters.entrySet()) {
FilterDef filterDef = entry.getValue();
sb.append(" <filter>\n");
appendElement(sb, INDENT4, "description", filterDef.getDescription());
appendElement(sb, INDENT4, "display-name", filterDef.getDisplayName());
appendElement(sb, INDENT4, "filter-name", filterDef.getFilterName());
appendElement(sb, INDENT4, "filter-class", filterDef.getFilterClass());
// Async support was introduced for Servlet 3.0 onwards
if (getMajorVersion() != 2) {
appendElement(sb, INDENT4, "async-supported", filterDef.getAsyncSupported());
}
for (Map.Entry<String, String> param : filterDef.getParameterMap().entrySet()) {
sb.append(" <init-param>\n");
appendElement(sb, INDENT6, "param-name", param.getKey());
appendElement(sb, INDENT6, "param-value", param.getValue());
sb.append(" </init-param>\n");
}
sb.append(" </filter>\n");
}
sb.append('\n');
for (FilterMap filterMap : filterMaps) {
sb.append(" <filter-mapping>\n");
appendElement(sb, INDENT4, "filter-name", filterMap.getFilterName());
if (filterMap.getMatchAllServletNames()) {
sb.append(" <servlet-name>*</servlet-name>\n");
} else {
for (String servletName : filterMap.getServletNames()) {
appendElement(sb, INDENT4, "servlet-name", servletName);
}
}
if (filterMap.getMatchAllUrlPatterns()) {
sb.append(" <url-pattern>*</url-pattern>\n");
} else {
for (String urlPattern : filterMap.getURLPatterns()) {
appendElement(sb, INDENT4, "url-pattern", encodeUrl(urlPattern));
}
}
// dispatcher was added in Servlet 2.4
if (getMajorVersion() > 2 || getMinorVersion() > 3) {
for (String dispatcher : filterMap.getDispatcherNames()) {
if (getMajorVersion() == 2 && DispatcherType.ASYNC.name().equals(dispatcher)) {
continue;
}
appendElement(sb, INDENT4, "dispatcher", dispatcher);
}
}
sb.append(" </filter-mapping>\n");
}
sb.append('\n');
}
// Listeners were introduced in Servlet 2.3
if (getMajorVersion() > 2 || getMinorVersion() > 2) {
for (String listener : listeners) {
sb.append(" <listener>\n");
appendElement(sb, INDENT4, "listener-class", listener);
sb.append(" </listener>\n");
}
sb.append('\n');
}
for (Map.Entry<String, ServletDef> entry : servlets.entrySet()) {
ServletDef servletDef = entry.getValue();
sb.append(" <servlet>\n");
appendElement(sb, INDENT4, "description", servletDef.getDescription());
appendElement(sb, INDENT4, "display-name", servletDef.getDisplayName());
appendElement(sb, INDENT4, "servlet-name", entry.getKey());
appendElement(sb, INDENT4, "servlet-class", servletDef.getServletClass());
appendElement(sb, INDENT4, "jsp-file", servletDef.getJspFile());
for (Map.Entry<String, String> param : servletDef.getParameterMap().entrySet()) {
sb.append(" <init-param>\n");
appendElement(sb, INDENT6, "param-name", param.getKey());
appendElement(sb, INDENT6, "param-value", param.getValue());
sb.append(" </init-param>\n");
}
appendElement(sb, INDENT4, "load-on-startup", servletDef.getLoadOnStartup());
appendElement(sb, INDENT4, "enabled", servletDef.getEnabled());
// Async support was introduced for Servlet 3.0 onwards
if (getMajorVersion() != 2) {
appendElement(sb, INDENT4, "async-supported", servletDef.getAsyncSupported());
}
// servlet/run-as was introduced in Servlet 2.3
if (getMajorVersion() > 2 || getMinorVersion() > 2) {
if (servletDef.getRunAs() != null) {
sb.append(" <run-as>\n");
appendElement(sb, INDENT6, "role-name", servletDef.getRunAs());
sb.append(" </run-as>\n");
}
}
for (SecurityRoleRef roleRef : servletDef.getSecurityRoleRefs()) {
sb.append(" <security-role-ref>\n");
appendElement(sb, INDENT6, "role-name", roleRef.getName());
appendElement(sb, INDENT6, "role-link", roleRef.getLink());
sb.append(" </security-role-ref>\n");
}
// multipart-config was added in Servlet 3.0
if (getMajorVersion() != 2) {
MultipartDef multipartDef = servletDef.getMultipartDef();
if (multipartDef != null) {
sb.append(" <multipart-config>\n");
appendElement(sb, INDENT6, "location", multipartDef.getLocation());
appendElement(sb, INDENT6, "max-file-size", multipartDef.getMaxFileSize());
appendElement(sb, INDENT6, "max-request-size", multipartDef.getMaxRequestSize());
appendElement(sb, INDENT6, "file-size-threshold", multipartDef.getFileSizeThreshold());
sb.append(" </multipart-config>\n");
}
}
sb.append(" </servlet>\n");
}
sb.append('\n');
for (Map.Entry<String, String> entry : servletMappings.entrySet()) {
sb.append(" <servlet-mapping>\n");
appendElement(sb, INDENT4, "servlet-name", entry.getValue());
appendElement(sb, INDENT4, "url-pattern", encodeUrl(entry.getKey()));
sb.append(" </servlet-mapping>\n");
}
sb.append('\n');
if (sessionConfig != null) {
sb.append(" <session-config>\n");
appendElement(sb, INDENT4, "session-timeout", sessionConfig.getSessionTimeout());
if (majorVersion >= 3) {
sb.append(" <cookie-config>\n");
appendElement(sb, INDENT6, "name", sessionConfig.getCookieName());
appendElement(sb, INDENT6, "domain", sessionConfig.getCookieDomain());
appendElement(sb, INDENT6, "path", sessionConfig.getCookiePath());
appendElement(sb, INDENT6, "comment", sessionConfig.getCookieComment());
appendElement(sb, INDENT6, "http-only", sessionConfig.getCookieHttpOnly());
appendElement(sb, INDENT6, "secure", sessionConfig.getCookieSecure());
appendElement(sb, INDENT6, "max-age", sessionConfig.getCookieMaxAge());
sb.append(" </cookie-config>\n");
for (SessionTrackingMode stm : sessionConfig.getSessionTrackingModes()) {
appendElement(sb, INDENT4, "tracking-mode", stm.name());
}
}
sb.append(" </session-config>\n\n");
}
for (Map.Entry<String, String> entry : mimeMappings.entrySet()) {
sb.append(" <mime-mapping>\n");
appendElement(sb, INDENT4, "extension", entry.getKey());
appendElement(sb, INDENT4, "mime-type", entry.getValue());
sb.append(" </mime-mapping>\n");
}
sb.append('\n');
if (welcomeFiles.size() > 0) {
sb.append(" <welcome-file-list>\n");
for (String welcomeFile : welcomeFiles) {
appendElement(sb, INDENT4, "welcome-file", welcomeFile);
}
sb.append(" </welcome-file-list>\n\n");
}
for (ErrorPage errorPage : errorPages.values()) {
String exceptionType = errorPage.getExceptionType();
int errorCode = errorPage.getErrorCode();
if (exceptionType == null && errorCode == 0 && getMajorVersion() == 2) {
// Default error pages are only supported from 3.0 onwards
continue;
}
sb.append(" <error-page>\n");
if (errorPage.getExceptionType() != null) {
appendElement(sb, INDENT4, "exception-type", exceptionType);
} else if (errorPage.getErrorCode() > 0) {
appendElement(sb, INDENT4, "error-code", Integer.toString(errorCode));
}
appendElement(sb, INDENT4, "location", errorPage.getLocation());
sb.append(" </error-page>\n");
}
sb.append('\n');
// directly and jsp-property-group did not exist
if (taglibs.size() > 0 || jspPropertyGroups.size() > 0) {
if (getMajorVersion() > 2 || getMinorVersion() > 3) {
sb.append(" <jsp-config>\n");
}
for (Map.Entry<String, String> entry : taglibs.entrySet()) {
sb.append(" <taglib>\n");
appendElement(sb, INDENT6, "taglib-uri", entry.getKey());
appendElement(sb, INDENT6, "taglib-location", entry.getValue());
sb.append(" </taglib>\n");
}
if (getMajorVersion() > 2 || getMinorVersion() > 3) {
for (JspPropertyGroup jpg : jspPropertyGroups) {
sb.append(" <jsp-property-group>\n");
for (String urlPattern : jpg.getUrlPatterns()) {
appendElement(sb, INDENT6, "url-pattern", encodeUrl(urlPattern));
}
appendElement(sb, INDENT6, "el-ignored", jpg.getElIgnored());
appendElement(sb, INDENT6, "page-encoding", jpg.getPageEncoding());
appendElement(sb, INDENT6, "scripting-invalid", jpg.getScriptingInvalid());
appendElement(sb, INDENT6, "is-xml", jpg.getIsXml());
for (String prelude : jpg.getIncludePreludes()) {
appendElement(sb, INDENT6, "include-prelude", prelude);
}
for (String coda : jpg.getIncludeCodas()) {
appendElement(sb, INDENT6, "include-coda", coda);
}
appendElement(sb, INDENT6, "deferred-syntax-allowed-as-literal", jpg.getDeferredSyntax());
appendElement(sb, INDENT6, "trim-directive-whitespaces", jpg.getTrimWhitespace());
appendElement(sb, INDENT6, "default-content-type", jpg.getDefaultContentType());
appendElement(sb, INDENT6, "buffer", jpg.getBuffer());
appendElement(sb, INDENT6, "error-on-undeclared-namespace", jpg.getErrorOnUndeclaredNamespace());
sb.append(" </jsp-property-group>\n");
}
sb.append(" </jsp-config>\n\n");
}
}
// resource-env-ref was introduced in Servlet 2.3
if (getMajorVersion() > 2 || getMinorVersion() > 2) {
for (ContextResourceEnvRef resourceEnvRef : resourceEnvRefs.values()) {
sb.append(" <resource-env-ref>\n");
appendElement(sb, INDENT4, "description", resourceEnvRef.getDescription());
appendElement(sb, INDENT4, "resource-env-ref-name", resourceEnvRef.getName());
appendElement(sb, INDENT4, "resource-env-ref-type", resourceEnvRef.getType());
appendElement(sb, INDENT4, "mapped-name", resourceEnvRef.getProperty("mappedName"));
for (InjectionTarget target : resourceEnvRef.getInjectionTargets()) {
sb.append(" <injection-target>\n");
appendElement(sb, INDENT6, "injection-target-class", target.getTargetClass());
appendElement(sb, INDENT6, "injection-target-name", target.getTargetName());
sb.append(" </injection-target>\n");
}
appendElement(sb, INDENT4, "lookup-name", resourceEnvRef.getLookupName());
sb.append(" </resource-env-ref>\n");
}
sb.append('\n');
}
for (ContextResource resourceRef : resourceRefs.values()) {
sb.append(" <resource-ref>\n");
appendElement(sb, INDENT4, "description", resourceRef.getDescription());
appendElement(sb, INDENT4, "res-ref-name", resourceRef.getName());
appendElement(sb, INDENT4, "res-type", resourceRef.getType());
appendElement(sb, INDENT4, "res-auth", resourceRef.getAuth());
// resource-ref/res-sharing-scope was introduced in Servlet 2.3
if (getMajorVersion() > 2 || getMinorVersion() > 2) {
appendElement(sb, INDENT4, "res-sharing-scope", resourceRef.getScope());
}
appendElement(sb, INDENT4, "mapped-name", resourceRef.getProperty("mappedName"));
for (InjectionTarget target : resourceRef.getInjectionTargets()) {
sb.append(" <injection-target>\n");
appendElement(sb, INDENT6, "injection-target-class", target.getTargetClass());
appendElement(sb, INDENT6, "injection-target-name", target.getTargetName());
sb.append(" </injection-target>\n");
}
appendElement(sb, INDENT4, "lookup-name", resourceRef.getLookupName());
sb.append(" </resource-ref>\n");
}
sb.append('\n');
for (SecurityConstraint constraint : securityConstraints) {
sb.append(" <security-constraint>\n");
// security-constraint/display-name was introduced in Servlet 2.3
if (getMajorVersion() > 2 || getMinorVersion() > 2) {
appendElement(sb, INDENT4, "display-name", constraint.getDisplayName());
}
for (SecurityCollection collection : constraint.findCollections()) {
sb.append(" <web-resource-collection>\n");
appendElement(sb, INDENT6, "web-resource-name", collection.getName());
appendElement(sb, INDENT6, "description", collection.getDescription());
for (String urlPattern : collection.findPatterns()) {
appendElement(sb, INDENT6, "url-pattern", encodeUrl(urlPattern));
}
for (String method : collection.findMethods()) {
appendElement(sb, INDENT6, "http-method", method);
}
for (String method : collection.findOmittedMethods()) {
appendElement(sb, INDENT6, "http-method-omission", method);
}
sb.append(" </web-resource-collection>\n");
}
if (constraint.findAuthRoles().length > 0) {
sb.append(" <auth-constraint>\n");
for (String role : constraint.findAuthRoles()) {
appendElement(sb, INDENT6, "role-name", role);
}
sb.append(" </auth-constraint>\n");
}
if (constraint.getUserConstraint() != null) {
sb.append(" <user-data-constraint>\n");
appendElement(sb, INDENT6, "transport-guarantee", constraint.getUserConstraint());
sb.append(" </user-data-constraint>\n");
}
sb.append(" </security-constraint>\n");
}
sb.append('\n');
if (loginConfig != null) {
sb.append(" <login-config>\n");
appendElement(sb, INDENT4, "auth-method", loginConfig.getAuthMethod());
appendElement(sb, INDENT4, "realm-name", loginConfig.getRealmName());
if (loginConfig.getErrorPage() != null || loginConfig.getLoginPage() != null) {
sb.append(" <form-login-config>\n");
appendElement(sb, INDENT6, "form-login-page", loginConfig.getLoginPage());
appendElement(sb, INDENT6, "form-error-page", loginConfig.getErrorPage());
sb.append(" </form-login-config>\n");
}
sb.append(" </login-config>\n\n");
}
for (String roleName : securityRoles) {
sb.append(" <security-role>\n");
appendElement(sb, INDENT4, "role-name", roleName);
sb.append(" </security-role>\n");
}
for (ContextEnvironment envEntry : envEntries.values()) {
sb.append(" <env-entry>\n");
appendElement(sb, INDENT4, "description", envEntry.getDescription());
appendElement(sb, INDENT4, "env-entry-name", envEntry.getName());
appendElement(sb, INDENT4, "env-entry-type", envEntry.getType());
appendElement(sb, INDENT4, "env-entry-value", envEntry.getValue());
appendElement(sb, INDENT4, "mapped-name", envEntry.getProperty("mappedName"));
for (InjectionTarget target : envEntry.getInjectionTargets()) {
sb.append(" <injection-target>\n");
appendElement(sb, INDENT6, "injection-target-class", target.getTargetClass());
appendElement(sb, INDENT6, "injection-target-name", target.getTargetName());
sb.append(" </injection-target>\n");
}
appendElement(sb, INDENT4, "lookup-name", envEntry.getLookupName());
sb.append(" </env-entry>\n");
}
sb.append('\n');
for (ContextEjb ejbRef : ejbRefs.values()) {
sb.append(" <ejb-ref>\n");
appendElement(sb, INDENT4, "description", ejbRef.getDescription());
appendElement(sb, INDENT4, "ejb-ref-name", ejbRef.getName());
appendElement(sb, INDENT4, "ejb-ref-type", ejbRef.getType());
appendElement(sb, INDENT4, "home", ejbRef.getHome());
appendElement(sb, INDENT4, "remote", ejbRef.getRemote());
appendElement(sb, INDENT4, "ejb-link", ejbRef.getLink());
appendElement(sb, INDENT4, "mapped-name", ejbRef.getProperty("mappedName"));
for (InjectionTarget target : ejbRef.getInjectionTargets()) {
sb.append(" <injection-target>\n");
appendElement(sb, INDENT6, "injection-target-class", target.getTargetClass());
appendElement(sb, INDENT6, "injection-target-name", target.getTargetName());
sb.append(" </injection-target>\n");
}
appendElement(sb, INDENT4, "lookup-name", ejbRef.getLookupName());
sb.append(" </ejb-ref>\n");
}
sb.append('\n');
// ejb-local-ref was introduced in Servlet 2.3
if (getMajorVersion() > 2 || getMinorVersion() > 2) {
for (ContextLocalEjb ejbLocalRef : ejbLocalRefs.values()) {
sb.append(" <ejb-local-ref>\n");
appendElement(sb, INDENT4, "description", ejbLocalRef.getDescription());
appendElement(sb, INDENT4, "ejb-ref-name", ejbLocalRef.getName());
appendElement(sb, INDENT4, "ejb-ref-type", ejbLocalRef.getType());
appendElement(sb, INDENT4, "local-home", ejbLocalRef.getHome());
appendElement(sb, INDENT4, "local", ejbLocalRef.getLocal());
appendElement(sb, INDENT4, "ejb-link", ejbLocalRef.getLink());
appendElement(sb, INDENT4, "mapped-name", ejbLocalRef.getProperty("mappedName"));
for (InjectionTarget target : ejbLocalRef.getInjectionTargets()) {
sb.append(" <injection-target>\n");
appendElement(sb, INDENT6, "injection-target-class", target.getTargetClass());
appendElement(sb, INDENT6, "injection-target-name", target.getTargetName());
sb.append(" </injection-target>\n");
}
appendElement(sb, INDENT4, "lookup-name", ejbLocalRef.getLookupName());
sb.append(" </ejb-local-ref>\n");
}
sb.append('\n');
}
// service-ref was introduced in Servlet 2.4
if (getMajorVersion() > 2 || getMinorVersion() > 3) {
for (ContextService serviceRef : serviceRefs.values()) {
sb.append(" <service-ref>\n");
appendElement(sb, INDENT4, "description", serviceRef.getDescription());
appendElement(sb, INDENT4, "display-name", serviceRef.getDisplayname());
appendElement(sb, INDENT4, "service-ref-name", serviceRef.getName());
appendElement(sb, INDENT4, "service-interface", serviceRef.getInterface());
appendElement(sb, INDENT4, "service-ref-type", serviceRef.getType());
appendElement(sb, INDENT4, "wsdl-file", serviceRef.getWsdlfile());
appendElement(sb, INDENT4, "jaxrpc-mapping-file", serviceRef.getJaxrpcmappingfile());
String qname = serviceRef.getServiceqnameNamespaceURI();
if (qname != null) {
qname = qname + ":";
}
qname = qname + serviceRef.getServiceqnameLocalpart();
appendElement(sb, INDENT4, "service-qname", qname);
Iterator<String> endpointIter = serviceRef.getServiceendpoints();
while (endpointIter.hasNext()) {
String endpoint = endpointIter.next();
sb.append(" <port-component-ref>\n");
appendElement(sb, INDENT6, "service-endpoint-interface", endpoint);
appendElement(sb, INDENT6, "port-component-link", serviceRef.getProperty(endpoint));
sb.append(" </port-component-ref>\n");
}
Iterator<String> handlerIter = serviceRef.getHandlers();
while (handlerIter.hasNext()) {
String handler = handlerIter.next();
sb.append(" <handler>\n");
ContextHandler ch = serviceRef.getHandler(handler);
appendElement(sb, INDENT6, "handler-name", ch.getName());
appendElement(sb, INDENT6, "handler-class", ch.getHandlerclass());
sb.append(" </handler>\n");
}
// TODO handler-chains
appendElement(sb, INDENT4, "mapped-name", serviceRef.getProperty("mappedName"));
for (InjectionTarget target : serviceRef.getInjectionTargets()) {
sb.append(" <injection-target>\n");
appendElement(sb, INDENT6, "injection-target-class", target.getTargetClass());
appendElement(sb, INDENT6, "injection-target-name", target.getTargetName());
sb.append(" </injection-target>\n");
}
appendElement(sb, INDENT4, "lookup-name", serviceRef.getLookupName());
sb.append(" </service-ref>\n");
}
sb.append('\n');
}
if (!postConstructMethods.isEmpty()) {
for (Entry<String, String> entry : postConstructMethods.entrySet()) {
sb.append(" <post-construct>\n");
appendElement(sb, INDENT4, "lifecycle-callback-class", entry.getKey());
appendElement(sb, INDENT4, "lifecycle-callback-method", entry.getValue());
sb.append(" </post-construct>\n");
}
sb.append('\n');
}
if (!preDestroyMethods.isEmpty()) {
for (Entry<String, String> entry : preDestroyMethods.entrySet()) {
sb.append(" <pre-destroy>\n");
appendElement(sb, INDENT4, "lifecycle-callback-class", entry.getKey());
appendElement(sb, INDENT4, "lifecycle-callback-method", entry.getValue());
sb.append(" </pre-destroy>\n");
}
sb.append('\n');
}
// Servlet 2.4
if (getMajorVersion() > 2 || getMinorVersion() > 3) {
for (MessageDestinationRef mdr : messageDestinationRefs.values()) {
sb.append(" <message-destination-ref>\n");
appendElement(sb, INDENT4, "description", mdr.getDescription());
appendElement(sb, INDENT4, "message-destination-ref-name", mdr.getName());
appendElement(sb, INDENT4, "message-destination-type", mdr.getType());
appendElement(sb, INDENT4, "message-destination-usage", mdr.getUsage());
appendElement(sb, INDENT4, "message-destination-link", mdr.getLink());
appendElement(sb, INDENT4, "mapped-name", mdr.getProperty("mappedName"));
for (InjectionTarget target : mdr.getInjectionTargets()) {
sb.append(" <injection-target>\n");
appendElement(sb, INDENT6, "injection-target-class", target.getTargetClass());
appendElement(sb, INDENT6, "injection-target-name", target.getTargetName());
sb.append(" </injection-target>\n");
}
appendElement(sb, INDENT4, "lookup-name", mdr.getLookupName());
sb.append(" </message-destination-ref>\n");
}
sb.append('\n');
for (MessageDestination md : messageDestinations.values()) {
sb.append(" <message-destination>\n");
appendElement(sb, INDENT4, "description", md.getDescription());
appendElement(sb, INDENT4, "display-name", md.getDisplayName());
appendElement(sb, INDENT4, "message-destination-name", md.getName());
appendElement(sb, INDENT4, "mapped-name", md.getProperty("mappedName"));
appendElement(sb, INDENT4, "lookup-name", md.getLookupName());
sb.append(" </message-destination>\n");
}
sb.append('\n');
}
// locale-encoding-mapping-list was introduced in Servlet 2.4
if (getMajorVersion() > 2 || getMinorVersion() > 3) {
if (localeEncodingMappings.size() > 0) {
sb.append(" <locale-encoding-mapping-list>\n");
for (Map.Entry<String, String> entry : localeEncodingMappings.entrySet()) {
sb.append(" <locale-encoding-mapping>\n");
appendElement(sb, INDENT6, "locale", entry.getKey());
appendElement(sb, INDENT6, "encoding", entry.getValue());
sb.append(" </locale-encoding-mapping>\n");
}
sb.append(" </locale-encoding-mapping-list>\n");
sb.append("\n");
}
}
// deny-uncovered-http-methods was introduced in Servlet 3.1
if (getMajorVersion() > 3 || (getMajorVersion() == 3 && getMinorVersion() > 0)) {
if (denyUncoveredHttpMethods) {
sb.append(" <deny-uncovered-http-methods/>");
sb.append("\n");
}
}
// request-encoding and response-encoding was introduced in Servlet 4.0
if (getMajorVersion() >= 4) {
appendElement(sb, INDENT2, "request-character-encoding", requestCharacterEncoding);
appendElement(sb, INDENT2, "response-character-encoding", responseCharacterEncoding);
}
sb.append("</web-app>");
return sb.toString();
}
use of jakarta.servlet.SessionTrackingMode in project spring-security by spring-projects.
the class AbstractSecurityWebApplicationInitializerTests method onStartupWhenDefaultsThenSessionTrackingModes.
@Test
public void onStartupWhenDefaultsThenSessionTrackingModes() {
ServletContext context = mock(ServletContext.class);
FilterRegistration.Dynamic registration = mock(FilterRegistration.Dynamic.class);
ArgumentCaptor<DelegatingFilterProxy> proxyCaptor = ArgumentCaptor.forClass(DelegatingFilterProxy.class);
given(context.addFilter(eq("springSecurityFilterChain"), proxyCaptor.capture())).willReturn(registration);
ArgumentCaptor<Set<SessionTrackingMode>> modesCaptor = ArgumentCaptor.forClass(new HashSet<SessionTrackingMode>() {
}.getClass());
willDoNothing().given(context).setSessionTrackingModes(modesCaptor.capture());
new AbstractSecurityWebApplicationInitializer() {
}.onStartup(context);
assertProxyDefaults(proxyCaptor.getValue());
Set<SessionTrackingMode> modes = modesCaptor.getValue();
assertThat(modes).hasSize(1);
assertThat(modes).containsExactly(SessionTrackingMode.COOKIE);
}
Aggregations