import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.argeo.api.cms.CmsAuth;
import org.argeo.api.cms.CmsLog;
}
- @Override
+// @Override
public boolean handleSecurity(HttpServletRequest request, HttpServletResponse response) throws IOException {
if (log.isTraceEnabled())
HttpUtils.logRequestHeaders(log, request);
import java.util.Locale;
import java.util.Objects;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.argeo.cms.auth.RemoteAuthRequest;
import org.argeo.cms.auth.RemoteAuthSession;
import java.util.Objects;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.argeo.cms.auth.RemoteAuthResponse;
import org.argeo.cms.auth.RemoteAuthSession;
public class ServletHttpSession implements RemoteAuthSession {
- private javax.servlet.http.HttpSession session;
+ private jakarta.servlet.http.HttpSession session;
- public ServletHttpSession(javax.servlet.http.HttpSession session) {
+ public ServletHttpSession(jakarta.servlet.http.HttpSession session) {
super();
this.session = session;
}
import java.io.IOException;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.argeo.cms.auth.RemoteAuthSession;
import org.argeo.cms.servlet.ServletHttpSession;
import java.util.StringJoiner;
import javax.net.ssl.SSLSession;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpContext;
import java.util.Enumeration;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.argeo.api.cms.CmsLog;
--- /dev/null
+package org.argeo.cms.servlet.javax;
+
+import java.util.Locale;
+import java.util.Objects;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.argeo.cms.auth.RemoteAuthRequest;
+import org.argeo.cms.auth.RemoteAuthSession;
+
+public class JavaxServletHttpRequest implements RemoteAuthRequest {
+ private final HttpServletRequest request;
+
+ public JavaxServletHttpRequest(HttpServletRequest request) {
+ Objects.requireNonNull(request);
+ this.request = request;
+ }
+
+ @Override
+ public RemoteAuthSession getSession() {
+ HttpSession httpSession = request.getSession(false);
+ if (httpSession == null)
+ return null;
+ return new JavaxServletHttpSession(httpSession);
+ }
+
+ @Override
+ public RemoteAuthSession createSession() {
+ return new JavaxServletHttpSession(request.getSession(true));
+ }
+
+ @Override
+ public Locale getLocale() {
+ return request.getLocale();
+ }
+
+ @Override
+ public Object getAttribute(String key) {
+ return request.getAttribute(key);
+ }
+
+ @Override
+ public void setAttribute(String key, Object object) {
+ request.setAttribute(key, object);
+ }
+
+ @Override
+ public String getHeader(String key) {
+ return request.getHeader(key);
+ }
+
+ @Override
+ public String getRemoteAddr() {
+ return request.getRemoteAddr();
+ }
+
+ @Override
+ public int getLocalPort() {
+ return request.getLocalPort();
+ }
+
+ @Override
+ public int getRemotePort() {
+ return request.getRemotePort();
+ }
+}
--- /dev/null
+package org.argeo.cms.servlet.javax;
+
+import javax.servlet.http.HttpSession;
+
+import org.argeo.cms.auth.RemoteAuthSession;
+
+public class JavaxServletHttpSession implements RemoteAuthSession {
+ private HttpSession session;
+
+ public JavaxServletHttpSession(HttpSession session) {
+ super();
+ this.session = session;
+ }
+
+ @Override
+ public boolean isValid() {
+ try {// test http session
+ session.getCreationTime();
+ return true;
+ } catch (IllegalStateException ise) {
+ return false;
+ }
+ }
+
+ @Override
+ public String getId() {
+ return session.getId();
+ }
+
+}
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
-import javax.websocket.Extension;
-import javax.websocket.HandshakeResponse;
-import javax.websocket.server.HandshakeRequest;
-import javax.websocket.server.ServerEndpointConfig;
-import javax.websocket.server.ServerEndpointConfig.Configurator;
+import jakarta.websocket.Extension;
+import jakarta.websocket.HandshakeResponse;
+import jakarta.websocket.server.HandshakeRequest;
+import jakarta.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.server.ServerEndpointConfig.Configurator;
import org.argeo.api.cms.CmsAuth;
import org.argeo.api.cms.CmsLog;
import java.nio.channels.ClosedChannelException;
import java.util.Map;
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnOpen;
-import javax.websocket.RemoteEndpoint;
-import javax.websocket.Session;
-import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnError;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.RemoteEndpoint;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.PathParam;
+import jakarta.websocket.server.ServerEndpoint;
import org.argeo.api.cms.CmsEventBus;
import org.argeo.api.cms.CmsEventSubscriber;
import java.nio.channels.ClosedChannelException;
-import javax.websocket.OnError;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnError;
+import jakarta.websocket.server.ServerEndpoint;
import org.argeo.api.cms.CmsLog;
import java.util.Map;
import java.util.Objects;
-import javax.servlet.http.HttpSession;
-import javax.websocket.server.HandshakeRequest;
+import jakarta.servlet.http.HttpSession;
+import jakarta.websocket.server.HandshakeRequest;
import org.argeo.cms.auth.RemoteAuthRequest;
import org.argeo.cms.auth.RemoteAuthSession;
import java.util.Collections;
import java.util.List;
-import javax.websocket.HandshakeResponse;
+import jakarta.websocket.HandshakeResponse;
import org.argeo.cms.auth.RemoteAuthResponse;
Import-Package: \
javax.servlet.http,\
org.eclipse.jetty.server.handler,\
+org.eclipse.jetty.util,\
org.eclipse.jetty.util.component,\
*
\ No newline at end of file
import java.nio.file.Path;
import java.util.concurrent.CompletableFuture;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.websocket.DeploymentException;
-import javax.websocket.server.ServerContainer;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.SessionHandler;
+import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer.Configurator;
+import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer;
-import org.eclipse.jetty.ee8.nested.SessionHandler;
-import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
-import org.eclipse.jetty.ee8.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer;
-import org.eclipse.jetty.ee8.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer.Configurator;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.server.ServerContainer;
/** A {@link JettyHttpServer} which is compatible with Equinox servlets. */
public class CmsJettyServer extends JettyHttpServer {
servletContextHandler.setAttribute(CONTEXT_TEMPDIR, tempDir.toAbsolutePath().toFile());
SessionHandler handler = new SessionHandler();
- handler.setMaxInactiveInterval(-1);
+ // FIXME deal with long running session
+ // handler.setMaxInactiveInterval(-1);
servletContextHandler.setSessionHandler(handler);
- JavaxWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
+ JakartaWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
@Override
public void accept(ServletContext servletContext, ServerContainer serverContainer)
package org.argeo.cms.jetty;
import java.util.AbstractMap;
-import java.util.Enumeration;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import org.eclipse.jetty.ee8.nested.ContextHandler;
+import org.eclipse.jetty.server.handler.ContextHandler;
/**
* A {@link Map} implementation wrapping the attributes of a Jetty
@Override
public Set<Entry<String, Object>> entrySet() {
Set<Entry<String, Object>> entries = new HashSet<>();
- for (Enumeration<String> keys = contextHandler.getAttributeNames(); keys.hasMoreElements();) {
- entries.add(new ContextAttributeEntry(keys.nextElement()));
+ // Jetty ee8
+// for (Enumeration<String> keys = contextHandler.getAttributeNames(); keys.hasMoreElements();) {
+// entries.add(new ContextAttributeEntry(keys.nextElement()));
+// }
+ for (String key : contextHandler.asAttributeMap().keySet()) {
+ entries.add(new ContextAttributeEntry(key));
}
return entries;
}
import java.util.Map;
-import javax.servlet.ServletContext;
-import javax.websocket.DeploymentException;
-import javax.websocket.server.ServerContainer;
+import jakarta.servlet.ServletContext;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.server.ServerContainer;
import org.argeo.cms.servlet.httpserver.HttpContextServlet;
import org.argeo.cms.websocket.server.WebsocketEndpoints;
-import org.eclipse.jetty.ee8.nested.SessionHandler;
-import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
-import org.eclipse.jetty.ee8.servlet.ServletHolder;
-import org.eclipse.jetty.ee8.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer;
-import org.eclipse.jetty.ee8.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer.Configurator;
+import org.eclipse.jetty.ee10.servlet.SessionHandler;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletHolder;
+import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer;
+import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer.Configurator;
import com.sun.net.httpserver.HttpHandler;
servletContextHandler.addServlet(new ServletHolder(servlet), "/*");
SessionHandler sessionHandler = new SessionHandler();
// FIXME find a better default
- sessionHandler.setMaxInactiveInterval(-1);
+ // FIXME find out how to have long-running sessions
+ // sessionHandler.setMaxInactiveInterval(-1);
servletContextHandler.setSessionHandler(sessionHandler);
attributes = new ContextHandlerAttributes(servletContextHandler);
// web socket
if (handler instanceof WebsocketEndpoints) {
- JavaxWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
+ JakartaWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
@Override
public void accept(ServletContext servletContext, ServerContainer serverContainer)
import java.util.Objects;
import org.argeo.cms.websocket.server.WebsocketEndpoints;
-import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
import com.sun.net.httpserver.Authenticator;
import com.sun.net.httpserver.Filter;
import java.util.concurrent.ThreadPoolExecutor;
import javax.net.ssl.SSLContext;
-import javax.servlet.ServletException;
-import javax.websocket.server.ServerContainer;
+import jakarta.servlet.ServletException;
+import jakarta.websocket.server.ServerContainer;
import org.argeo.api.cms.CmsLog;
import org.argeo.api.cms.CmsState;
import org.argeo.cms.CmsDeployProperty;
import org.argeo.cms.http.server.HttpServerUtils;
-import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
import org.eclipse.jetty.http.UriCompliance;
import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory;
import java.util.HashMap;
import java.util.Map;
-import javax.websocket.DeploymentException;
-import javax.websocket.server.ServerContainer;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.server.ServerContainer;
import org.argeo.api.cms.CmsLog;
import org.argeo.cms.servlet.httpserver.HttpContextServlet;
import org.argeo.cms.websocket.server.WebsocketEndpoints;
-import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
-import org.eclipse.jetty.ee8.servlet.ServletHolder;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletHolder;
import com.sun.net.httpserver.HttpHandler;
Import-Package:\
org.eclipse.jetty.session,\
+org.eclipse.jetty.server,\
*
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionIdListener;
-import javax.servlet.http.HttpSessionListener;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionIdListener;
+import jakarta.servlet.http.HttpSessionListener;
import org.argeo.api.cms.CmsLog;
import org.argeo.cms.jetty.CmsJettyServer;
-import org.eclipse.equinox.http.servlet.HttpServiceServlet;
-import org.eclipse.jetty.ee8.nested.SessionHandler;
-import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
-import org.eclipse.jetty.ee8.servlet.ServletHolder;
+import org.eclipse.rap.http.servlet.HttpServiceServlet;
+import org.eclipse.jetty.ee10.servlet.SessionHandler;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletHolder;
import org.osgi.framework.Constants;
/** A {@link CmsJettyServer} integrating with Equinox HTTP framework. */
import java.util.Map;
import java.util.concurrent.ForkJoinPool;
-import javax.websocket.server.ServerEndpointConfig;
+import jakarta.websocket.server.ServerEndpointConfig;
import org.argeo.api.cms.CmsConstants;
import org.argeo.api.cms.CmsLog;
import org.argeo.cms.CmsDeployProperty;
import org.argeo.cms.util.LangUtils;
import org.argeo.cms.websocket.server.CmsWebSocketConfigurator;
-import org.eclipse.equinox.http.jetty.JettyConfigurator;
+import org.eclipse.rap.http.jetty.JettyConfigurator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.FrameworkUtil;
import java.util.Dictionary;
-import javax.servlet.ServletContext;
-import javax.websocket.DeploymentException;
-import javax.websocket.server.ServerContainer;
+import jakarta.servlet.ServletContext;
+import jakarta.websocket.DeploymentException;
+import jakarta.websocket.server.ServerContainer;
-import org.eclipse.equinox.http.jetty.JettyCustomizer;
+import org.eclipse.rap.http.jetty.JettyCustomizer;
import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.SslConnectionFactory;
-import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
import org.eclipse.jetty.util.ssl.SslContextFactory;
-import org.eclipse.jetty.ee8.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer;
-import org.eclipse.jetty.ee8.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer.Configurator;
+import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer;
+import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer.Configurator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
Object webSocketEnabled = settings.get(WEBSOCKET_ENABLED);
if (webSocketEnabled != null && webSocketEnabled.toString().equals("true")) {
ServletContextHandler servletContextHandler = (ServletContextHandler) context;
- JavaxWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
+ JakartaWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
@Override
public void accept(ServletContext servletContext, ServerContainer serverContainer)
throws DeploymentException {
- bc.registerService(javax.websocket.server.ServerContainer.class, serverContainer, null);
+ bc.registerService(jakarta.websocket.server.ServerContainer.class, serverContainer, null);
}
});
}
import java.util.Locale;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSessionBindingListener;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSessionBindingListener;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.service.UISession;