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;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.argeo.node.NodeConstants;
+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
* transactionality.
*/
-class NodeHttp implements KernelConstants, ArgeoJcrConstants {
+class NodeHttp implements KernelConstants {
private final static Log log = LogFactory.getLog(NodeHttp.class);
// Filters
// 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);
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)
@Override
public Session run() throws Exception {
+ Collection<ServiceReference<Repository>> srs = bc.getServiceReferences(Repository.class, "("
+ + NodeConstants.JCR_REPOSITORY_ALIAS + "=" + NodeConstants.ALIAS_NODE + ")");
+ Repository repository = bc.getService(srs.iterator().next());
return repository.login();
}
String desc = node.hasProperty(JCR_DESCRIPTION) ? node.getProperty(JCR_DESCRIPTION).getString() : null;
Calendar lastUpdate = node.hasProperty(JCR_LAST_MODIFIED)
? node.getProperty(JCR_LAST_MODIFIED).getDate() : null;
- String url = CmsUtils.getCanonicalUrl(node, request);
+ String url = KernelUtils.getCanonicalUrl(node, request);
String imgUrl = null;
loop: for (NodeIterator it = node.getNodes(); it.hasNext();) {
// Takes the first found cms:image
Node child = it.nextNode();
if (child.isNodeType(CMS_IMAGE)) {
- imgUrl = CmsUtils.getDataUrl(child, request);
+ imgUrl = KernelUtils.getDataUrl(child, request);
break loop;
}
}
* 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);