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 2012/05/25 16:50:59 UTC

svn commit: r1342659 - in /sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl: ResourceResolverImpl.java helper/RootResourceProviderEntry.java

Author: cziegeler
Date: Fri May 25 14:50:59 2012
New Revision: 1342659

URL: http://svn.apache.org/viewvc?rev=1342659&view=rev
Log:
SLING-2396 : New resource resolver factory based on resource provider factories (WiP)

Modified:
    sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
    sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/RootResourceProviderEntry.java

Modified: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java?rev=1342659&r1=1342658&r2=1342659&view=diff
==============================================================================
--- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java (original)
+++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java Fri May 25 14:50:59 2012
@@ -41,6 +41,7 @@ import org.apache.sling.api.resource.Non
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceNotFoundException;
 import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.resourceresolver.impl.helper.MapEntry;
@@ -153,7 +154,7 @@ public class ResourceResolverImpl extend
 
     /**
      * Check if the resource resolver is already closed.
-     * 
+     *
      * @throws IllegalStateException
      *             If the resolver is already closed
      */
@@ -345,7 +346,7 @@ public class ResourceResolverImpl extend
 
     /**
      * calls map(HttpServletRequest, String) as map(null, resourcePath)
-     * 
+     *
      * @see org.apache.sling.api.resource.ResourceResolver#map(java.lang.String)
      */
     public String map(final String resourcePath) {
@@ -357,7 +358,7 @@ public class ResourceResolverImpl extend
      * full implementation - apply sling:alias from the resource path - apply
      * /etc/map mappings (inkl. config backwards compat) - return absolute uri
      * if possible
-     * 
+     *
      * @see org.apache.sling.api.resource.ResourceResolver#map(javax.servlet.http.HttpServletRequest,
      *      java.lang.String)
      */
@@ -636,7 +637,10 @@ public class ResourceResolverImpl extend
         if ( session != null ) {
             return session.getUserID();
         }
-        // TODO - use authentication info, attributes as fallback
+        final Object value = this.getAttribute(ResourceResolverFactory.USER);
+        if ( value != null ) {
+            return value.toString();
+        }
         return null;
     }
 
@@ -677,7 +681,7 @@ public class ResourceResolverImpl extend
     /**
      * Returns a string used for matching map entries against the given request
      * or URI parts.
-     * 
+     *
      * @param scheme
      *            The URI scheme
      * @param host
@@ -714,7 +718,7 @@ public class ResourceResolverImpl extend
      * <p>
      * If neither mechanism (direct access and drill down) resolves to a resource this method
      * returns <code>null</code>.
-     * 
+     *
      * @param absPath
      *            The absolute path of the resource to return.
      * @return The resource found or <code>null</code> if the resource could not
@@ -887,7 +891,7 @@ public class ResourceResolverImpl extend
      * absolute it is returned unmodified (the same instance actually). If the
      * path is relative it is made absolute by prepending the first entry of the
      * {@link #getSearchPath() search path}.
-     * 
+     *
      * @param path
      *            The path to ensure absolute
      * @return The absolute path as explained above

Modified: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/RootResourceProviderEntry.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/RootResourceProviderEntry.java?rev=1342659&r1=1342658&r2=1342659&view=diff
==============================================================================
--- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/RootResourceProviderEntry.java (original)
+++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/RootResourceProviderEntry.java Fri May 25 14:50:59 2012
@@ -37,6 +37,7 @@ import org.apache.sling.api.resource.Que
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceProvider;
 import org.apache.sling.api.resource.ResourceProviderFactory;
+import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.osgi.framework.Constants;
 import org.osgi.service.event.Event;
@@ -134,12 +135,17 @@ public class RootResourceProviderEntry e
         return null;
     }
 
+    private static final String FORBIDDEN_ATTRIBUTE = ResourceResolverFactory.PASSWORD;
+
     /**
      * Invoke all attributes providers and combine the result
      * @see AttributesProvider#getAttributeNames()
      */
     public Iterator<String> getAttributeNames(final ResourceResolverContext ctx) {
         final Set<String> names = new HashSet<String>();
+        if ( ctx.getAuthInfo() != null ) {
+            names.addAll(ctx.getAuthInfo().keySet());
+        }
         final Iterator<AttributesProvider> i = this.attributeProviders.getProviders(ctx);
         while ( i.hasNext() ) {
             final AttributesProvider adap = i.next();
@@ -148,6 +154,8 @@ public class RootResourceProviderEntry e
                 names.addAll(newNames);
             }
         }
+        names.remove(FORBIDDEN_ATTRIBUTE);
+
         return names.iterator();
     }
 
@@ -156,11 +164,18 @@ public class RootResourceProviderEntry e
      * @see AttributesProvider#getAttribute(String)
      */
     public Object getAttribute(final ResourceResolverContext ctx, final String name) {
-        final Iterator<AttributesProvider> i = this.attributeProviders.getProviders(ctx);
         Object result = null;
-        while ( result == null && i.hasNext() ) {
-            final AttributesProvider adap = i.next();
-            result = adap.getAttribute(name);
+        if (!FORBIDDEN_ATTRIBUTE.equals(name) )  {
+            if (ctx.getAuthInfo() != null) {
+                result = ctx.getAuthInfo().get(name);
+            }
+            if ( result == null ) {
+                final Iterator<AttributesProvider> i = this.attributeProviders.getProviders(ctx);
+                while ( result == null && i.hasNext() ) {
+                    final AttributesProvider adap = i.next();
+                    result = adap.getAttribute(name);
+                }
+            }
         }
         return result;
     }