package com.airlock.iam.servicecontainer.app.infrastructure.webapp.view;

import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.BootstrapFragmentResponse;
import com.vaadin.server.BootstrapListener;
import com.vaadin.server.BootstrapPageResponse;
import com.vaadin.server.ServiceException;
import com.vaadin.server.SessionInitEvent;
import com.vaadin.server.SessionInitListener;
import com.vaadin.server.VaadinServlet;
import jakarta.servlet.ServletException;

@VaadinServletConfiguration(productionMode = true, ui = ServiceContainerUI.class, closeIdleSessions = true)
public class ServiceContainerServlet extends VaadinServlet {
   protected void servletInitialized() throws ServletException {
      super.servletInitialized();
      this.getService().addSessionInitListener(new ServiceContainerServlet.ServiceContainerSessionInitListener());
   }

   private static final class HeaderBootstrapListener implements BootstrapListener {
      public void modifyBootstrapFragment(BootstrapFragmentResponse response) {
      }

      public void modifyBootstrapPage(BootstrapPageResponse response) {
         response.getDocument().head().prependElement("meta").attr("name", "msapplication-config").attr("content", "none");
      }
   }

   private static final class ServiceContainerSessionInitListener implements SessionInitListener {
      public void sessionInit(SessionInitEvent event) throws ServiceException {
         event.getSession().addBootstrapListener(new ServiceContainerServlet.HeaderBootstrapListener());
      }
   }
}
