public ServletContextImpl(final ServletContainer servletContainer, final Deployment deployment) {
   this.servletContainer = servletContainer;
   this.deployment = deployment;
   this.deploymentInfo = deployment.getDeploymentInfo();
   sessionCookieConfig = new SessionCookieConfigImpl(this);
   ServletSessionConfig sc = deploymentInfo.getServletSessionConfig();
   if (sc != null) {
     sessionCookieConfig.setName(sc.getName());
     sessionCookieConfig.setComment(sc.getComment());
     sessionCookieConfig.setDomain(sc.getDomain());
     sessionCookieConfig.setHttpOnly(sc.isHttpOnly());
     sessionCookieConfig.setMaxAge(sc.getMaxAge());
     sessionCookieConfig.setPath(sc.getPath());
     sessionCookieConfig.setSecure(sc.isSecure());
     if (sc.getSessionTrackingModes() != null) {
       defaultSessionTrackingModes =
           sessionTrackingModes = new HashSet<SessionTrackingMode>(sc.getSessionTrackingModes());
     }
   }
   if (deploymentInfo.getServletContextAttributeBackingMap() == null) {
     this.attributes = new ConcurrentHashMap<String, Object>();
   } else {
     this.attributes = deploymentInfo.getServletContextAttributeBackingMap();
   }
   attributes.putAll(deployment.getDeploymentInfo().getServletContextAttributes());
 }
  public void initDone() {
    initialized = true;
    Set<SessionTrackingMode> trackingMethods = sessionTrackingModes;
    if (trackingMethods == null || trackingMethods.isEmpty()) {
      sessionConfig = sessionCookieConfig;
    } else {

      if (sessionTrackingModes.contains(SessionTrackingMode.SSL)) {
        sessionConfig = new SslSessionConfig(sessionCookieConfig);
      } else {
        if (sessionTrackingModes.contains(SessionTrackingMode.COOKIE)
            || sessionTrackingModes.contains(SessionTrackingMode.URL)) {
          sessionConfig = sessionCookieConfig;
          sessionCookieConfig.setFallback(
              new PathParameterSessionConfig(sessionCookieConfig.getName().toLowerCase()));
        } else if (sessionTrackingModes.contains(SessionTrackingMode.COOKIE)) {
          sessionConfig = sessionCookieConfig;
        } else if (sessionTrackingModes.contains(SessionTrackingMode.URL)) {
          sessionConfig =
              new PathParameterSessionConfig(sessionCookieConfig.getName().toLowerCase());
        }
      }
    }
  }