From 85b0dba06831dfca60d634b4591aec21d5d9f1af Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 5 Jan 2022 10:11:54 +0100 Subject: [PATCH] Adapt to changes in Argeo Commons --- cms/org.argeo.cms.integration/pom.xml | 5 + .../cms/integration/CmsLoginServlet.java | 23 ++-- .../cms/integration/CmsLogoutServlet.java | 23 ++-- .../integration/CmsPrivateServletContext.java | 16 +-- .../cms/integration/CmsTokenServlet.java | 15 +-- .../websocket/CmsWebSocketConfigurator.java | 7 +- dep/org.argeo.slc.dep.e4.rap/pom.xml | 10 -- dep/pom.xml | 2 +- .../dep/org.argeo.dep.cms.platform/pom.xml | 2 +- legacy/argeo-commons/dep/pom.xml | 2 +- .../org.argeo.cms.ui.workbench.rap/pom.xml | 2 +- .../org.argeo.cms.ui.workbench/pom.xml | 2 +- legacy/dep/org.argeo.slc.dep.backend/pom.xml | 9 -- legacy/dep/pom.xml | 2 +- legacy/org.argeo.slc.client.ui.dist/pom.xml | 2 +- legacy/org.argeo.slc.client.ui/pom.xml | 2 +- legacy/org.argeo.slc.launcher/pom.xml | 100 +++++++++--------- .../src/org/argeo/slc/cli/SlcMain.java | 2 +- legacy/org.argeo.slc.spring/pom.xml | 8 +- .../unit/AbstractOsgiRuntimeTestCase.java | 2 +- org.argeo.slc.jcr/pom.xml | 2 +- 21 files changed, 122 insertions(+), 116 deletions(-) diff --git a/cms/org.argeo.cms.integration/pom.xml b/cms/org.argeo.cms.integration/pom.xml index 82dc5f84c..cba3edeb2 100644 --- a/cms/org.argeo.cms.integration/pom.xml +++ b/cms/org.argeo.cms.integration/pom.xml @@ -14,6 +14,11 @@ org.argeo.cms ${version.argeo-commons} + + org.argeo.commons + org.argeo.cms.servlet + ${version.argeo-commons} + org.argeo.commons org.argeo.cms.jcr diff --git a/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsLoginServlet.java b/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsLoginServlet.java index 321796d96..ad976b114 100644 --- a/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsLoginServlet.java +++ b/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsLoginServlet.java @@ -20,6 +20,8 @@ import org.argeo.api.NodeConstants; import org.argeo.api.cms.CmsSessionId; import org.argeo.cms.auth.HttpRequestCallback; import org.argeo.cms.auth.HttpRequestCallbackHandler; +import org.argeo.cms.servlet.ServletHttpRequest; +import org.argeo.cms.servlet.ServletHttpResponse; import org.osgi.service.useradmin.Authorization; import com.fasterxml.jackson.core.JsonGenerator; @@ -40,11 +42,12 @@ public class CmsLoginServlet extends HttpServlet { } @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { LoginContext lc = null; - String username = request.getParameter(PARAM_USERNAME); - String password = request.getParameter(PARAM_PASSWORD); + String username = req.getParameter(PARAM_USERNAME); + String password = req.getParameter(PARAM_PASSWORD); + ServletHttpRequest request = new ServletHttpRequest(req); + ServletHttpResponse response = new ServletHttpResponse(resp); try { lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, new HttpRequestCallbackHandler(request, response) { public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { @@ -65,7 +68,7 @@ public class CmsLoginServlet extends HttpServlet { Subject subject = lc.getSubject(); CmsSessionId cmsSessionId = extractFrom(subject.getPrivateCredentials(CmsSessionId.class)); if (cmsSessionId == null) { - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return; } Authorization authorization = extractFrom(subject.getPrivateCredentials(Authorization.class)); @@ -75,15 +78,15 @@ public class CmsLoginServlet extends HttpServlet { cmsSessionId.getUuid().toString(), authorization.getRoles(), authorization.toString(), locale != null ? locale.toString() : null); - response.setContentType("application/json"); - JsonGenerator jg = objectMapper.getFactory().createGenerator(response.getWriter()); + resp.setContentType("application/json"); + JsonGenerator jg = objectMapper.getFactory().createGenerator(resp.getWriter()); jg.writeObject(cmsSessionDescriptor); - String redirectTo = redirectTo(request); + String redirectTo = redirectTo(req); if (redirectTo != null) - response.sendRedirect(redirectTo); + resp.sendRedirect(redirectTo); } catch (LoginException e) { - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED); return; } } diff --git a/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsLogoutServlet.java b/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsLogoutServlet.java index 0821dab40..461953790 100644 --- a/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsLogoutServlet.java +++ b/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsLogoutServlet.java @@ -18,6 +18,8 @@ import org.argeo.api.cms.CmsSessionId; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.auth.HttpRequestCallback; import org.argeo.cms.auth.HttpRequestCallbackHandler; +import org.argeo.cms.servlet.ServletHttpRequest; +import org.argeo.cms.servlet.ServletHttpResponse; /** Externally authenticate an http session. */ public class CmsLogoutServlet extends HttpServlet { @@ -32,18 +34,21 @@ public class CmsLogoutServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ServletHttpRequest httpRequest = new ServletHttpRequest(request); + ServletHttpResponse httpResponse = new ServletHttpResponse(response); LoginContext lc = null; try { - lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, new HttpRequestCallbackHandler(request, response) { - public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { - for (Callback callback : callbacks) { - if (callback instanceof HttpRequestCallback) { - ((HttpRequestCallback) callback).setRequest(request); - ((HttpRequestCallback) callback).setResponse(response); + lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, + new HttpRequestCallbackHandler(httpRequest, httpResponse) { + public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { + for (Callback callback : callbacks) { + if (callback instanceof HttpRequestCallback) { + ((HttpRequestCallback) callback).setRequest(httpRequest); + ((HttpRequestCallback) callback).setResponse(httpResponse); + } + } } - } - } - }); + }); lc.login(); Subject subject = lc.getSubject(); diff --git a/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsPrivateServletContext.java b/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsPrivateServletContext.java index 862d7ee08..be45fba1c 100644 --- a/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsPrivateServletContext.java +++ b/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsPrivateServletContext.java @@ -15,6 +15,8 @@ import javax.servlet.http.HttpServletResponse; import org.argeo.cms.auth.HttpRequestCallbackHandler; import org.argeo.cms.servlet.ServletAuthUtils; +import org.argeo.cms.servlet.ServletHttpRequest; +import org.argeo.cms.servlet.ServletHttpResponse; import org.osgi.service.http.context.ServletContextHelper; /** Manages security access to servlets. */ @@ -34,18 +36,20 @@ public class CmsPrivateServletContext extends ServletContextHelper { * the login page. */ @Override - public boolean handleSecurity(final HttpServletRequest request, HttpServletResponse response) throws IOException { + public boolean handleSecurity(final HttpServletRequest req, HttpServletResponse resp) throws IOException { LoginContext lc = null; + ServletHttpRequest request = new ServletHttpRequest(req); + ServletHttpResponse response = new ServletHttpResponse(resp); - String pathInfo = request.getPathInfo(); - String servletPath = request.getServletPath(); + String pathInfo = req.getPathInfo(); + String servletPath = req.getServletPath(); if ((pathInfo != null && (servletPath + pathInfo).equals(loginPage)) || servletPath.contentEquals(loginServlet)) return true; try { lc = new LoginContext(LOGIN_CONTEXT_USER, new HttpRequestCallbackHandler(request, response)); lc.login(); } catch (LoginException e) { - lc = processUnauthorized(request, response); + lc = processUnauthorized(req, resp); if (lc == null) return false; } @@ -64,8 +68,8 @@ public class CmsPrivateServletContext extends ServletContextHelper { } @Override - public void finishSecurity(HttpServletRequest request, HttpServletResponse response) { - ServletAuthUtils.clearRequestSecurity(request); + public void finishSecurity(HttpServletRequest req, HttpServletResponse resp) { + ServletAuthUtils.clearRequestSecurity(new ServletHttpRequest(req)); } protected LoginContext processUnauthorized(HttpServletRequest request, HttpServletResponse response) { diff --git a/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsTokenServlet.java b/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsTokenServlet.java index 11a6944b2..274e0ed49 100644 --- a/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsTokenServlet.java +++ b/cms/org.argeo.cms.integration/src/org/argeo/cms/integration/CmsTokenServlet.java @@ -19,6 +19,8 @@ import org.argeo.api.NodeConstants; import org.argeo.cms.CmsUserManager; import org.argeo.cms.auth.HttpRequestCallback; import org.argeo.cms.auth.HttpRequestCallbackHandler; +import org.argeo.cms.servlet.ServletHttpRequest; +import org.argeo.cms.servlet.ServletHttpResponse; import org.argeo.naming.NamingUtils; import org.osgi.service.useradmin.Authorization; @@ -38,8 +40,9 @@ public class CmsTokenServlet extends HttpServlet { private ObjectMapper objectMapper = new ObjectMapper(); @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + ServletHttpRequest request = new ServletHttpRequest(req); + ServletHttpResponse response = new ServletHttpResponse(resp); LoginContext lc = null; try { lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, new HttpRequestCallbackHandler(request, response) { @@ -61,7 +64,7 @@ public class CmsTokenServlet extends HttpServlet { Subject subject = lc.getSubject(); Authorization authorization = extractFrom(subject.getPrivateCredentials(Authorization.class)); String token = UUID.randomUUID().toString(); - String expiryDateStr = request.getParameter(PARAM_EXPIRY_DATE); + String expiryDateStr = req.getParameter(PARAM_EXPIRY_DATE); ZonedDateTime expiryDate; if (expiryDateStr != null) { expiryDate = NamingUtils.ldapDateToZonedDateTime(expiryDateStr); @@ -77,11 +80,11 @@ public class CmsTokenServlet extends HttpServlet { tokenDescriptor.setExpiryDate(expiryDateStr); // tokenDescriptor.setRoles(Collections.unmodifiableSortedSet(new TreeSet<>(Arrays.asList(roles)))); - response.setContentType("application/json"); - JsonGenerator jg = objectMapper.getFactory().createGenerator(response.getWriter()); + resp.setContentType("application/json"); + JsonGenerator jg = objectMapper.getFactory().createGenerator(resp.getWriter()); jg.writeObject(tokenDescriptor); } catch (Exception e) { - new CmsExceptionsChain(e).writeAsJson(objectMapper, response); + new CmsExceptionsChain(e).writeAsJson(objectMapper, resp); } } diff --git a/cms/org.argeo.cms.integration/src/org/argeo/cms/websocket/CmsWebSocketConfigurator.java b/cms/org.argeo.cms.integration/src/org/argeo/cms/websocket/CmsWebSocketConfigurator.java index 298e8ec27..fc100e0e4 100644 --- a/cms/org.argeo.cms.integration/src/org/argeo/cms/websocket/CmsWebSocketConfigurator.java +++ b/cms/org.argeo.cms.integration/src/org/argeo/cms/websocket/CmsWebSocketConfigurator.java @@ -6,7 +6,6 @@ import java.util.List; import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; -import javax.servlet.http.HttpSession; import javax.websocket.Extension; import javax.websocket.HandshakeResponse; import javax.websocket.server.HandshakeRequest; @@ -17,6 +16,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.api.NodeConstants; import org.argeo.cms.auth.HttpRequestCallbackHandler; +import org.argeo.cms.auth.HttpSession; +import org.argeo.cms.servlet.ServletHttpSession; import org.osgi.service.http.context.ServletContextHelper; /** Customises the initialisation of a new web socket. */ @@ -62,7 +63,8 @@ public class CmsWebSocketConfigurator extends Configurator { @Override public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) { - HttpSession httpSession = (HttpSession) request.getHttpSession(); + + HttpSession httpSession = new ServletHttpSession((javax.servlet.http.HttpSession) request.getHttpSession()); if (log.isDebugEnabled() && httpSession != null) log.debug("Web socket HTTP session id: " + httpSession.getId()); @@ -112,4 +114,3 @@ public class CmsWebSocketConfigurator extends Configurator { // webServerConfig.put(InternalHttpConstants.WEBSOCKET_ENABLED, "true"); //} //} - diff --git a/dep/org.argeo.slc.dep.e4.rap/pom.xml b/dep/org.argeo.slc.dep.e4.rap/pom.xml index e8d2e7d3d..6edae26e4 100644 --- a/dep/org.argeo.slc.dep.e4.rap/pom.xml +++ b/dep/org.argeo.slc.dep.e4.rap/pom.xml @@ -23,16 +23,6 @@ pom - - - - org.argeo.commons - org.argeo.osgi.boot - ${version.argeo-commons} - test - - diff --git a/dep/pom.xml b/dep/pom.xml index c463f27cd..8ed99e2ef 100644 --- a/dep/pom.xml +++ b/dep/pom.xml @@ -98,7 +98,7 @@ org.argeo.commons - org.argeo.osgi.boot + org.argeo.init ${version.argeo-commons} test diff --git a/legacy/argeo-commons/dep/org.argeo.dep.cms.platform/pom.xml b/legacy/argeo-commons/dep/org.argeo.dep.cms.platform/pom.xml index a188f909d..950b4bed2 100644 --- a/legacy/argeo-commons/dep/org.argeo.dep.cms.platform/pom.xml +++ b/legacy/argeo-commons/dep/org.argeo.dep.cms.platform/pom.xml @@ -48,7 +48,7 @@ - org.argeo.commons + org.argeo.commons.rap org.argeo.swt.specific.rap ${version.argeo-commons} diff --git a/legacy/argeo-commons/dep/pom.xml b/legacy/argeo-commons/dep/pom.xml index 088cdae6b..52b49de38 100644 --- a/legacy/argeo-commons/dep/pom.xml +++ b/legacy/argeo-commons/dep/pom.xml @@ -93,7 +93,7 @@ org.argeo.commons - org.argeo.osgi.boot + org.argeo.init ${version.argeo-commons} test diff --git a/legacy/argeo-commons/org.argeo.cms.ui.workbench.rap/pom.xml b/legacy/argeo-commons/org.argeo.cms.ui.workbench.rap/pom.xml index 1708a0239..9e7235bd2 100644 --- a/legacy/argeo-commons/org.argeo.cms.ui.workbench.rap/pom.xml +++ b/legacy/argeo-commons/org.argeo.cms.ui.workbench.rap/pom.xml @@ -18,7 +18,7 @@ - org.argeo.commons + org.argeo.commons.rap org.argeo.swt.specific.rap ${version.argeo-commons} diff --git a/legacy/argeo-commons/org.argeo.cms.ui.workbench/pom.xml b/legacy/argeo-commons/org.argeo.cms.ui.workbench/pom.xml index 0bcfa6c79..ee4c0c12c 100644 --- a/legacy/argeo-commons/org.argeo.cms.ui.workbench/pom.xml +++ b/legacy/argeo-commons/org.argeo.cms.ui.workbench/pom.xml @@ -18,7 +18,7 @@ - org.argeo.commons + org.argeo.commons.rap org.argeo.swt.specific.rap ${version.argeo-commons} provided diff --git a/legacy/dep/org.argeo.slc.dep.backend/pom.xml b/legacy/dep/org.argeo.slc.dep.backend/pom.xml index 3e60b553e..288df6e6e 100644 --- a/legacy/dep/org.argeo.slc.dep.backend/pom.xml +++ b/legacy/dep/org.argeo.slc.dep.backend/pom.xml @@ -64,15 +64,6 @@ 2.3-SNAPSHOT - - - org.argeo.commons - org.argeo.osgi.boot - ${version.argeo-commons} - test - - org.argeo.slc.legacy.commons diff --git a/legacy/dep/pom.xml b/legacy/dep/pom.xml index affcea4a4..e4ffb87f1 100644 --- a/legacy/dep/pom.xml +++ b/legacy/dep/pom.xml @@ -98,7 +98,7 @@ org.argeo.commons - org.argeo.osgi.boot + org.argeo.init ${version.argeo-commons} test diff --git a/legacy/org.argeo.slc.client.ui.dist/pom.xml b/legacy/org.argeo.slc.client.ui.dist/pom.xml index 81598ed8b..9019fb608 100644 --- a/legacy/org.argeo.slc.client.ui.dist/pom.xml +++ b/legacy/org.argeo.slc.client.ui.dist/pom.xml @@ -18,7 +18,7 @@ ${version.argeo-commons} - org.argeo.commons + org.argeo.commons.rap org.argeo.swt.specific.rap ${version.argeo-commons} provided diff --git a/legacy/org.argeo.slc.client.ui/pom.xml b/legacy/org.argeo.slc.client.ui/pom.xml index be65f6959..107863d4e 100644 --- a/legacy/org.argeo.slc.client.ui/pom.xml +++ b/legacy/org.argeo.slc.client.ui/pom.xml @@ -29,7 +29,7 @@ ${version.argeo-commons} - org.argeo.commons + org.argeo.commons.rap org.argeo.swt.specific.rap ${version.argeo-commons} provided diff --git a/legacy/org.argeo.slc.launcher/pom.xml b/legacy/org.argeo.slc.launcher/pom.xml index c073f604c..1ff6e9ac5 100644 --- a/legacy/org.argeo.slc.launcher/pom.xml +++ b/legacy/org.argeo.slc.launcher/pom.xml @@ -1,5 +1,7 @@ - + 4.0.0 org.argeo.slc @@ -12,59 +14,59 @@ SLC Launcher - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.argeo.commons - org.argeo.osgi.boot + org.argeo.init ${version.argeo-commons} diff --git a/legacy/org.argeo.slc.launcher/src/org/argeo/slc/cli/SlcMain.java b/legacy/org.argeo.slc.launcher/src/org/argeo/slc/cli/SlcMain.java index 8717b5030..0da1121d1 100644 --- a/legacy/org.argeo.slc.launcher/src/org/argeo/slc/cli/SlcMain.java +++ b/legacy/org.argeo.slc.launcher/src/org/argeo/slc/cli/SlcMain.java @@ -18,7 +18,7 @@ import java.util.UUID; import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; -import org.argeo.osgi.boot.OsgiBoot; +import org.argeo.init.osgi.OsgiBoot; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.framework.launch.Framework; diff --git a/legacy/org.argeo.slc.spring/pom.xml b/legacy/org.argeo.slc.spring/pom.xml index 9cd31ff0a..bf268179b 100644 --- a/legacy/org.argeo.slc.spring/pom.xml +++ b/legacy/org.argeo.slc.spring/pom.xml @@ -1,4 +1,6 @@ - + 4.0.0 org.argeo.slc @@ -12,7 +14,7 @@ org.argeo.commons - org.argeo.enterprise + org.argeo.util ${version.argeo-commons} @@ -34,7 +36,7 @@ org.argeo.commons - org.argeo.osgi.boot + org.argeo.init ${version.argeo-commons} provided diff --git a/legacy/org.argeo.slc.spring/src/org/argeo/slc/spring/unit/AbstractOsgiRuntimeTestCase.java b/legacy/org.argeo.slc.spring/src/org/argeo/slc/spring/unit/AbstractOsgiRuntimeTestCase.java index 734a5ec94..65dfa55c9 100644 --- a/legacy/org.argeo.slc.spring/src/org/argeo/slc/spring/unit/AbstractOsgiRuntimeTestCase.java +++ b/legacy/org.argeo.slc.spring/src/org/argeo/slc/spring/unit/AbstractOsgiRuntimeTestCase.java @@ -7,7 +7,7 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.osgi.boot.OsgiBoot; +import org.argeo.init.osgi.OsgiBoot; import org.argeo.slc.SlcException; import org.eclipse.core.runtime.adaptor.EclipseStarter; import org.eclipse.gemini.blueprint.util.OsgiStringUtils; diff --git a/org.argeo.slc.jcr/pom.xml b/org.argeo.slc.jcr/pom.xml index c3638c2d8..9aac77be5 100644 --- a/org.argeo.slc.jcr/pom.xml +++ b/org.argeo.slc.jcr/pom.xml @@ -24,7 +24,7 @@ org.argeo.commons - org.argeo.enterprise + org.argeo.util ${version.argeo-commons} -- 2.39.2