X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FNodeHttp.java;h=4b700d4bc42f9e5ee4802939183460d62831bdbc;hb=5e273aace32e9b891e05b6590cc6af2751f2c9fd;hp=92f804d252d1ae970f2d8f35a9b4fbf7ceffcc72;hpb=088c1b517a543e935d8ab65c3b2fd2d0269b551d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeHttp.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeHttp.java index 92f804d25..4b700d4bc 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeHttp.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeHttp.java @@ -18,6 +18,7 @@ import org.apache.jackrabbit.webdav.simple.SimpleWebdavServlet; import org.argeo.cms.CmsException; import org.argeo.cms.internal.http.CmsSessionProvider; import org.argeo.cms.internal.http.DataHttpContext; +import org.argeo.cms.internal.http.HtmlServlet; import org.argeo.cms.internal.http.HttpUtils; import org.argeo.cms.internal.http.LinkServlet; import org.argeo.cms.internal.http.PrivateHttpContext; @@ -44,7 +45,8 @@ public class NodeHttp implements KernelConstants { private ServiceTracker repositories; private final ServiceTracker httpServiceTracker; - private static String httpRealm = "Argeo"; + private String httpRealm = "Argeo"; + private String webDavConfig = HttpUtils.WEBDAV_CONFIG; private final boolean cleanState; public NodeHttp(boolean cleanState) { @@ -59,7 +61,7 @@ public class NodeHttp implements KernelConstants { repositories.close(); } - public static void registerRepositoryServlets(HttpService httpService, String alias, Repository repository) { + public void registerRepositoryServlets(HttpService httpService, String alias, Repository repository) { if (httpService == null) throw new CmsException("No HTTP service available"); try { @@ -67,8 +69,8 @@ public class NodeHttp implements KernelConstants { registerRemotingServlet(httpService, alias, repository); if (NodeConstants.HOME.equals(alias)) registerFilesServlet(httpService, alias, repository); - if (log.isDebugEnabled()) - log.debug("Registered servlets for repository '" + alias + "'"); + if (log.isTraceEnabled()) + log.trace("Registered servlets for repository '" + alias + "'"); } catch (Exception e) { throw new CmsException("Could not register servlets for repository '" + alias + "'", e); } @@ -82,36 +84,36 @@ public class NodeHttp implements KernelConstants { httpService.unregister(remotingPath(alias)); if (NodeConstants.HOME.equals(alias)) httpService.unregister(filesPath(alias)); - if (log.isDebugEnabled()) - log.debug("Unregistered servlets for repository '" + alias + "'"); + if (log.isTraceEnabled()) + log.trace("Unregistered servlets for repository '" + alias + "'"); } catch (Exception e) { log.error("Could not unregister servlets for repository '" + alias + "'", e); } } - static void registerWebdavServlet(HttpService httpService, String alias, Repository repository) + void registerWebdavServlet(HttpService httpService, String alias, Repository repository) throws NamespaceException, ServletException { // WebdavServlet webdavServlet = new WebdavServlet(repository, new // OpenInViewSessionProvider(alias)); WebdavServlet webdavServlet = new WebdavServlet(repository, new CmsSessionProvider(alias)); String path = webdavPath(alias); Properties ip = new Properties(); - ip.setProperty(WebdavServlet.INIT_PARAM_RESOURCE_CONFIG, HttpUtils.WEBDAV_CONFIG); + ip.setProperty(WebdavServlet.INIT_PARAM_RESOURCE_CONFIG, webDavConfig); ip.setProperty(WebdavServlet.INIT_PARAM_RESOURCE_PATH_PREFIX, path); httpService.registerServlet(path, webdavServlet, ip, new DataHttpContext(httpRealm)); } - static void registerFilesServlet(HttpService httpService, String alias, Repository repository) + void registerFilesServlet(HttpService httpService, String alias, Repository repository) throws NamespaceException, ServletException { WebdavServlet filesServlet = new WebdavServlet(repository, new CmsSessionProvider(alias)); String path = filesPath(alias); Properties ip = new Properties(); - ip.setProperty(WebdavServlet.INIT_PARAM_RESOURCE_CONFIG, HttpUtils.WEBDAV_CONFIG); + ip.setProperty(WebdavServlet.INIT_PARAM_RESOURCE_CONFIG, webDavConfig); ip.setProperty(WebdavServlet.INIT_PARAM_RESOURCE_PATH_PREFIX, path); httpService.registerServlet(path, filesServlet, ip, new PrivateHttpContext(httpRealm, true)); } - static void registerRemotingServlet(HttpService httpService, String alias, Repository repository) + void registerRemotingServlet(HttpService httpService, String alias, Repository repository) throws NamespaceException, ServletException { RemotingServlet remotingServlet = new RemotingServlet(repository, new CmsSessionProvider(alias)); String path = remotingPath(alias); @@ -145,23 +147,7 @@ public class NodeHttp implements KernelConstants { return NodeConstants.PATH_FILES; } - // private Subject subjectFromRequest(HttpServletRequest request, - // HttpServletResponse response) { - // Authorization authorization = (Authorization) - // request.getAttribute(HttpContext.AUTHORIZATION); - // if (authorization == null) - // throw new CmsException("Not authenticated"); - // try { - // LoginContext lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, - // new HttpRequestCallbackHandler(request, response)); - // lc.login(); - // return lc.getSubject(); - // } catch (LoginException e) { - // throw new CmsException("Cannot login", e); - // } - // } - - static class RepositoriesStc extends ServiceTracker { + class RepositoriesStc extends ServiceTracker { private final HttpService httpService; private final BundleContext bc; @@ -198,9 +184,6 @@ public class NodeHttp implements KernelConstants { } private class PrepareHttpStc extends ServiceTracker { - // private DataHttp dataHttp; - // private NodeHttp nodeHttp; - public PrepareHttpStc() { super(bc, HttpService.class, null); } @@ -218,13 +201,6 @@ public class NodeHttp implements KernelConstants { @Override public void removedService(ServiceReference reference, HttpService service) { - // if (dataHttp != null) - // dataHttp.destroy(); - // dataHttp = null; - // if (nodeHttp != null) - // nodeHttp.destroy(); - // nodeHttp = null; - // destroy(); repositories.close(); repositories = null; } @@ -238,6 +214,7 @@ public class NodeHttp implements KernelConstants { try { httpService.registerServlet("/!", new LinkServlet(), null, null); httpService.registerServlet("/robots.txt", new RobotServlet(), null, null); + // httpService.registerServlet("/html", new HtmlServlet(), null, null); } catch (Exception e) { throw new CmsException("Cannot register filters", e); }