import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.Map;
-import javax.servlet.ServletContext;
import javax.servlet.ServletException;
-import javax.websocket.DeploymentException;
-import javax.websocket.server.ServerContainer;
-import javax.websocket.server.ServerEndpointConfig;
-import com.sun.net.httpserver.Authenticator;
-import com.sun.net.httpserver.HttpContext;
-import org.argeo.api.cms.CmsState;
-import org.argeo.cms.CmsDeployProperty;
-import org.argeo.cms.websocket.server.CmsWebSocketConfigurator;
-import org.argeo.cms.websocket.server.TestEndpoint;
import org.eclipse.jetty.server.session.SessionHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer;
-import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer.Configurator;
+/** A {@link JettyHttpServer} which is compatible with Equinox servlets. */
public class CmsJettyServer extends JettyHttpServer {
private static final String CONTEXT_TEMPDIR = "javax.servlet.context.tempdir";
// Equinox compatibility
private static final String INTERNAL_CONTEXT_CLASSLOADER = "org.eclipse.equinox.http.jetty.internal.ContextClassLoader";
-// private static final CmsLog log = CmsLog.getLog(CmsJettyServer.class);
-
-// private Server server;
-// private Path tempDir;
-//
-// private ServerConnector httpConnector;
-// private ServerConnector httpsConnector;
private Path tempDir;
- // WebSocket
-// private ServerContainer wsServerContainer;
- private ServerEndpointConfig.Configurator wsEndpointConfigurator;
-
- private CmsState cmsState;
-
- private Authenticator defaultAuthenticator;
-
protected void addServlets(ServletContextHandler servletContextHandler) throws ServletException {
}
@Override
protected void configureRootContextHandler(ServletContextHandler servletContextHandler) throws ServletException {
addServlets(servletContextHandler);
- enableWebSocket(servletContextHandler);
-
- }
-
- @Override
- public synchronized HttpContext createContext(String path) {
- HttpContext httpContext = super.createContext(path);
- httpContext.setAuthenticator(defaultAuthenticator);
- return httpContext;
- }
-
- protected void enableWebSocket(ServletContextHandler servletContextHandler) {
- String webSocketEnabled = getDeployProperty(CmsDeployProperty.WEBSOCKET_ENABLED);
- // web socket
- if (webSocketEnabled != null && webSocketEnabled.equals(Boolean.toString(true))) {
-// JavaxWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
-//
-// @Override
-// public void accept(ServletContext servletContext, ServerContainer serverContainer)
-// throws DeploymentException {
-//// wsServerContainer = serverContainer;
-//
-// CmsWebSocketConfigurator wsEndpointConfigurator = new CmsWebSocketConfigurator();
-//
-// ServerEndpointConfig config = ServerEndpointConfig.Builder
-// .create(TestEndpoint.class, "/ws/test/events/{topic}").configurator(wsEndpointConfigurator)
-// .build();
-// try {
-// serverContainer.addEndpoint(config);
-// } catch (DeploymentException e) {
-// throw new IllegalStateException("Cannot initalise the WebSocket server runtime.", e);
-// }
-// }
-// });
- }
}
-
- protected String getDeployProperty(CmsDeployProperty deployProperty) {
- return cmsState.getDeployProperty(deployProperty.getProperty());
- }
-
- public void setCmsState(CmsState cmsState) {
- this.cmsState = cmsState;
- }
-
- public void setDefaultAuthenticator(Authenticator defaultAuthenticator) {
- this.defaultAuthenticator = defaultAuthenticator;
- }
-
}