You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ed...@apache.org on 2006/11/22 03:08:23 UTC
svn commit: r478012 - in /jackrabbit/trunk/contrib/jcr-browser/src/main:
java/org/apache/jackrabbit/browser/ webapp/WEB-INF/
Author: edgarpoce
Date: Tue Nov 21 18:08:22 2006
New Revision: 478012
URL: http://svn.apache.org/viewvc?view=rev&rev=478012
Log:
synchronize session as proposed by jukka
rename login filter to jcrloginfilter.
Added:
jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrLoginFilter.java
- copied, changed from r477390, jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/LoginFilter.java
Removed:
jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/LoginFilter.java
Modified:
jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrSessionListener.java
jackrabbit/trunk/contrib/jcr-browser/src/main/webapp/WEB-INF/web.xml
Copied: jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrLoginFilter.java (from r477390, jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/LoginFilter.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrLoginFilter.java?view=diff&rev=478012&p1=jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/LoginFilter.java&r1=477390&p2=jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrLoginFilter.java&r2=478012
==============================================================================
--- jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/LoginFilter.java (original)
+++ jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrLoginFilter.java Tue Nov 21 18:08:22 2006
@@ -16,8 +16,13 @@
*/
package org.apache.jackrabbit.browser;
+import java.io.ByteArrayInputStream;
+import java.util.Properties;
+
+import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
+import javax.naming.InitialContext;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
@@ -29,9 +34,11 @@
import org.apache.jackrabbit.command.CommandHelper;
/**
- * Filter that binds the jcr session to http session
+ * Filter stores the jcr session in http session. It also synchronizes
*/
-public class LoginFilter implements Filter {
+public class JcrLoginFilter implements Filter {
+
+ private static Repository repository;
public void destroy() {
@@ -40,13 +47,13 @@
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws java.io.IOException, ServletException {
- chain.doFilter(request, response);
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ // Create the jcr session if necessary
try {
- HttpServletRequest httpRequest = (HttpServletRequest) request;
if (httpRequest.getSession()
.getAttribute(CommandHelper.SESSION_KEY) == null) {
- Session s = JcrSessionListener.getRepository().login(
+ Session s = getRepository().login(
new SimpleCredentials(httpRequest.getRemoteUser(), ""
.toCharArray()));
httpRequest.getSession().setAttribute(
@@ -56,10 +63,41 @@
throw new ServletException(
"unable to bind jcr session to http session", e);
}
+
+ // get the session from the http session
+ Object session = httpRequest.getSession().getAttribute(
+ CommandHelper.SESSION_KEY);
+
+ // Synchronize request
+ synchronized (session) {
+ chain.doFilter(request, response);
+ }
+
}
public void init(FilterConfig cfg) throws ServletException {
+ }
+
+ public static Repository getRepository() {
+ if (repository == null) {
+ try {
+ InitialContext ctx = new InitialContext();
+ String jndiAddress = (String) ctx
+ .lookup("java:comp/env/jcr/jndi/address");
+ String jndiProperties = (String) ctx
+ .lookup("java:comp/env/jcr/jndi/properties");
+ Properties properties = new Properties();
+ properties.load(new ByteArrayInputStream(jndiProperties
+ .getBytes()));
+ InitialContext repoCtx = new InitialContext(properties);
+ repository = (Repository) repoCtx.lookup(jndiAddress);
+ } catch (Exception e) {
+ throw new IllegalStateException(
+ "unable to retrieve repository. ", e);
+ }
+ }
+ return repository;
}
}
Modified: jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrSessionListener.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrSessionListener.java?view=diff&rev=478012&r1=478011&r2=478012
==============================================================================
--- jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrSessionListener.java (original)
+++ jackrabbit/trunk/contrib/jcr-browser/src/main/java/org/apache/jackrabbit/browser/JcrSessionListener.java Tue Nov 21 18:08:22 2006
@@ -16,12 +16,7 @@
*/
package org.apache.jackrabbit.browser;
-import java.io.ByteArrayInputStream;
-import java.util.Properties;
-
-import javax.jcr.Repository;
import javax.jcr.Session;
-import javax.naming.InitialContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@@ -29,8 +24,6 @@
public class JcrSessionListener implements HttpSessionListener {
- private static Repository repository;
-
public void sessionCreated(HttpSessionEvent evt) {
}
@@ -41,27 +34,6 @@
if (s!=null) {
s.logout();
}
- }
-
- public static Repository getRepository() {
- if (repository == null) {
- try {
- InitialContext ctx = new InitialContext();
- String jndiAddress = (String) ctx
- .lookup("java:comp/env/jcr/jndi/address");
- String jndiProperties = (String) ctx
- .lookup("java:comp/env/jcr/jndi/properties");
- Properties properties = new Properties();
- properties.load(new ByteArrayInputStream(jndiProperties
- .getBytes()));
- InitialContext repoCtx = new InitialContext(properties);
- repository = (Repository) repoCtx.lookup(jndiAddress);
- } catch (Exception e) {
- throw new IllegalStateException(
- "unable to retrieve repository. ", e);
- }
- }
- return repository;
}
}
Modified: jackrabbit/trunk/contrib/jcr-browser/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jcr-browser/src/main/webapp/WEB-INF/web.xml?view=diff&rev=478012&r1=478011&r2=478012
==============================================================================
--- jackrabbit/trunk/contrib/jcr-browser/src/main/webapp/WEB-INF/web.xml (original)
+++ jackrabbit/trunk/contrib/jcr-browser/src/main/webapp/WEB-INF/web.xml Tue Nov 21 18:08:22 2006
@@ -26,7 +26,7 @@
<filter>
<filter-name>loginFilter</filter-name>
- <filter-class>org.apache.jackrabbit.browser.LoginFilter</filter-class>
+ <filter-class>org.apache.jackrabbit.browser.JcrLoginFilter</filter-class>
</filter>
<filter>