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;
}