X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FNodeHttp.java;h=97e912edddf372ea6e06afd9fafea4b69ee53b4d;hb=06acf73a99f0e3908fe8998f1ff08dee109c5562;hp=de635983999998a5bcb2e6ad02d7ebad0f259d8b;hpb=c90be8d8cf3c1b52480e51fb7841cd3e7a5a3796;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 de6359839..97e912edd 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 @@ -10,6 +10,7 @@ import java.io.PrintWriter; import java.security.PrivilegedExceptionAction; import java.security.cert.X509Certificate; import java.util.Calendar; +import java.util.Collection; import java.util.Enumeration; import javax.jcr.Node; @@ -31,7 +32,9 @@ import org.argeo.cms.CmsException; import org.argeo.cms.util.CmsUtils; import org.argeo.jcr.ArgeoJcrConstants; import org.argeo.jcr.JcrUtils; -import org.eclipse.equinox.http.servlet.ExtendedHttpService; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.service.http.HttpService; /** * Intercepts and enriches http access, mainly focusing on security and @@ -46,16 +49,16 @@ class NodeHttp implements KernelConstants, ArgeoJcrConstants { // private final DoSFilter dosFilter; // private final QoSFilter qosFilter; - private Repository repository; + private BundleContext bc; - NodeHttp(ExtendedHttpService httpService, Repository node) { - this.repository = node; + NodeHttp(HttpService httpService, BundleContext bc) { + this.bc = bc; // rootFilter = new RootFilter(); // dosFilter = new CustomDosFilter(); // qosFilter = new QoSFilter(); try { - httpService.registerServlet("/!", new LinkServlet(repository), null, null); + httpService.registerServlet("/!", new LinkServlet(), null, null); httpService.registerServlet("/robots.txt", new RobotServlet(), null, null); } catch (Exception e) { throw new CmsException("Cannot register filters", e); @@ -65,13 +68,8 @@ class NodeHttp implements KernelConstants, ArgeoJcrConstants { public void destroy() { } - static class LinkServlet extends HttpServlet { + class LinkServlet extends HttpServlet { private static final long serialVersionUID = 3749990143146845708L; - private final Repository repository; - - public LinkServlet(Repository repository) { - this.repository = repository; - } @Override protected void service(HttpServletRequest request, HttpServletResponse response) @@ -118,6 +116,9 @@ class NodeHttp implements KernelConstants, ArgeoJcrConstants { @Override public Session run() throws Exception { + Collection> srs = bc.getServiceReferences(Repository.class, "(" + + ArgeoJcrConstants.JCR_REPOSITORY_ALIAS + "=" + ArgeoJcrConstants.ALIAS_NODE + ")"); + Repository repository = bc.getService(srs.iterator().next()); return repository.login(); } @@ -176,7 +177,7 @@ class NodeHttp implements KernelConstants, ArgeoJcrConstants { * escaping-html-in-java (+ escaping '). TODO Use * org.apache.commons.lang.StringEscapeUtils */ - private static String escapeHTML(String s) { + private String escapeHTML(String s) { StringBuilder out = new StringBuilder(Math.max(16, s.length())); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i);