You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2011/08/12 13:05:02 UTC

svn commit: r1157048 - /sling/trunk/bundles/jcr/davex/src/main/java/org/apache/sling/jcr/davex/impl/servlets/SlingDavExServlet.java

Author: cziegeler
Date: Fri Aug 12 11:05:02 2011
New Revision: 1157048

URL: http://svn.apache.org/viewvc?rev=1157048&view=rev
Log:
SLING-2167 : Use session from default implementation to let the tests pass

Modified:
    sling/trunk/bundles/jcr/davex/src/main/java/org/apache/sling/jcr/davex/impl/servlets/SlingDavExServlet.java

Modified: sling/trunk/bundles/jcr/davex/src/main/java/org/apache/sling/jcr/davex/impl/servlets/SlingDavExServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/davex/src/main/java/org/apache/sling/jcr/davex/impl/servlets/SlingDavExServlet.java?rev=1157048&r1=1157047&r2=1157048&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/davex/src/main/java/org/apache/sling/jcr/davex/impl/servlets/SlingDavExServlet.java (original)
+++ sling/trunk/bundles/jcr/davex/src/main/java/org/apache/sling/jcr/davex/impl/servlets/SlingDavExServlet.java Fri Aug 12 11:05:02 2011
@@ -21,10 +21,12 @@ import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Map;
 
+import javax.jcr.Credentials;
 import javax.jcr.LoginException;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 
@@ -101,10 +103,10 @@ public class SlingDavExServlet extends J
         return repository;
     }
 
+    private static char[] EMPTY_PW = new char[0];
+
     @Override
     protected SessionProvider getSessionProvider() {
-        // TODO - we have to fix this!!
-        final SessionProvider sp = super.getSessionProvider();
         return new SessionProvider() {
 
             public Session getSession(final HttpServletRequest req,
@@ -113,15 +115,20 @@ public class SlingDavExServlet extends J
             throws LoginException, ServletException, RepositoryException {
                 final ResourceResolver resolver = (ResourceResolver) req.getAttribute(AuthenticationSupport.REQUEST_ATTRIBUTE_RESOLVER);
                 if ( resolver != null ) {
-                    final Session superSession = sp.getSession(req, repository, workspace);
-                    return superSession;
+                    final Session session = resolver.adaptTo(Session.class);
+                    // as the session might be longer used by davex than the request
+                    // we have to create a new session!
+                    if ( session != null ) {
+                        final Credentials credentials = new SimpleCredentials(session.getUserID(), EMPTY_PW);
+                        final Session newSession = session.impersonate(credentials);
+                        return newSession;
+                    }
                 }
                 return null;
             }
 
-            public void releaseSession(Session paramSession) {
-                // nothing to do
-
+            public void releaseSession(final Session session) {
+                session.logout();
             }
         };
     }