Author: cziegeler Date: Sun Jun 3 13:17:21 2012 New Revision: 1345668 URL: http://svn.apache.org/viewvc?rev=1345668&view=rev Log: SLING-2396 : Add new resource provider interfaces (WiP)
Added: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ProviderHandler.java (contents, props changed) - copied, changed from r1345530, sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/AbstractWrappedResourceProvider.java sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderFactoryHandler.java (contents, props changed) - copied, changed from r1345530, sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProviderFactory.java sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderHandler.java (contents, props changed) - copied, changed from r1345530, sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProvider.java Removed: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/AbstractWrappedResourceProvider.java sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProvider.java sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProviderFactory.java Modified: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceIterator.java sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntry.java sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/RootResourceProviderEntry.java sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderList.java sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java Copied: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ProviderHandler.java (from r1345530, sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/AbstractWrappedResourceProvider.java) URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ProviderHandler.java?p2=sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ProviderHandler.java&p1=sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/AbstractWrappedResourceProvider.java&r1=1345530&r2=1345668&rev=1345668&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/AbstractWrappedResourceProvider.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ProviderHandler.java Sun Jun 3 13:17:21 2012 @@ -23,50 +23,73 @@ import java.util.Map; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceProvider; import org.apache.sling.api.resource.ResourceResolver; -import org.apache.sling.commons.osgi.ServiceUtil; +import org.osgi.framework.Constants; /** - * + * The provider handler is the common base class for the + * {@link ResourceProviderHandler} and the + * {@link ResourceProviderFactoryHandler}. */ -public abstract class AbstractWrappedResourceProvider { - - private final Comparable<?> comparable; - - /** Unique key to identify this resource provider. */ - private final String key; +public abstract class ProviderHandler implements Comparable<ProviderHandler> { /** Service properties. */ private final Map<String, Object> properties; + /** Unique service id */ + private final Long serviceId; + /** * */ - public AbstractWrappedResourceProvider(final Map<String, Object> properties, - final String key) { - this.comparable = ServiceUtil.getComparableForServiceRanking(properties); + public ProviderHandler(final Map<String, Object> properties) { this.properties = properties; - this.key = key; + this.serviceId = (Long) properties.get(Constants.SERVICE_ID); } /** - * Return the unique key for a provider. + * Return the service properties. */ - public String getKey() { - return this.key; + public Map<String, Object> getProperties() { + return this.properties; } /** - * Return the service properties. + * Return the service id. */ - public Map<String, Object> getProperties() { - return this.properties; + public Long getServiceId() { + return this.serviceId; } /** - * + * @see java.lang.Comparable#compareTo(java.lang.Object) */ - public Comparable<?> getComparable() { - return this.comparable; + public int compareTo(final ProviderHandler other) { + if (this.serviceId.equals(other.serviceId)) { + return 0; // same service + } + + Object rankObj = this.getProperties().get(Constants.SERVICE_RANKING); + Object otherRankObj = other.getProperties().get(Constants.SERVICE_RANKING); + + // If no rank, then spec says it defaults to zero. + rankObj = (rankObj == null) ? new Integer(0) : rankObj; + otherRankObj = (otherRankObj == null) ? new Integer(0) : otherRankObj; + + // If rank is not Integer, then spec says it defaults to zero. + Integer rank = (rankObj instanceof Integer) + ? (Integer) rankObj : new Integer(0); + Integer otherRank = (otherRankObj instanceof Integer) + ? (Integer) otherRankObj : new Integer(0); + + // Sort by rank in ascending order. + if (rank.compareTo(otherRank) < 0) { + return -1; // lower rank + } else if (rank.compareTo(otherRank) > 0) { + return 1; // higher rank + } + + // If ranks are equal, then sort by service id in descending order. + return (this.serviceId.compareTo(other.serviceId) < 0) ? 1 : -1; } /** @@ -82,5 +105,13 @@ public abstract class AbstractWrappedRes /** * Return a name of the resource provider/factory. */ - public abstract String getName(); + public String getName() { + final StringBuilder snBuilder = new StringBuilder(64); + snBuilder.append('{'); + snBuilder.append(this.toString()); + snBuilder.append('/'); + snBuilder.append(this.serviceId.toString()); + snBuilder.append('}'); + return snBuilder.toString(); + } } Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ProviderHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ProviderHandler.java ------------------------------------------------------------------------------ svn:keywords = author date id revision rev url Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ProviderHandler.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceIterator.java URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceIterator.java?rev=1345668&r1=1345667&r2=1345668&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceIterator.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceIterator.java Sun Jun 3 13:17:21 2012 @@ -65,7 +65,7 @@ public class ResourceIterator implements * <code>ResourceProvider</code> objects registered as nodes above the * {@link #parentResource} up to the root of the resource tree */ - private final Iterator<AbstractWrappedResourceProvider> providers; + private final Iterator<ProviderHandler> providers; /** * The child {@link ResourceProviderEntry} registered at the node of the @@ -133,7 +133,7 @@ public class ResourceIterator implements // gather the providers in linked set, such that we keep // the order of addition and make sure we only get one entry // for each resource provider - final Set<AbstractWrappedResourceProvider> providersSet = new LinkedHashSet<AbstractWrappedResourceProvider>(); + final Set<ProviderHandler> providersSet = new LinkedHashSet<ProviderHandler>(); final ResourceProviderEntry atPath = getResourceProviders(path, providersSet); if (log.isDebugEnabled()) { @@ -171,7 +171,7 @@ public class ResourceIterator implements while (delayedIter == null) { while ((resources == null || !resources.hasNext()) && providers.hasNext()) { - final AbstractWrappedResourceProvider provider = providers.next(); + final ProviderHandler provider = providers.next(); resources = provider.listChildren(this.resourceResolverContext, parentResource); log.debug(" Checking Provider {} ", provider); } @@ -270,7 +270,7 @@ public class ResourceIterator implements * <code>null</code> if there is no entry at the given location */ private ResourceProviderEntry getResourceProviders(final String path, - final Set<AbstractWrappedResourceProvider> providers) { + final Set<ProviderHandler> providers) { // collect providers along the ancestor path segements final String[] elements = ResourceProviderEntry.split(path, '/'); @@ -282,7 +282,7 @@ public class ResourceIterator implements log.debug("Loading from {} {} ", element, base.getResourceProviders().length); } - for (final AbstractWrappedResourceProvider rp : base.getResourceProviders()) { + for (final ProviderHandler rp : base.getResourceProviders()) { log.debug("Adding {} for {} ", rp, path); providers.add(rp); } @@ -294,7 +294,7 @@ public class ResourceIterator implements } // add in providers at this node in the tree, ie the root provider - for (final AbstractWrappedResourceProvider rp : rootProviderEntry.getResourceProviders()) { + for (final ProviderHandler rp : rootProviderEntry.getResourceProviders()) { log.debug("Loading All at {} ", path); providers.add(rp); } Modified: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntry.java URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntry.java?rev=1345668&r1=1345667&r2=1345668&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntry.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntry.java Sun Jun 3 13:17:21 2012 @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -57,7 +56,7 @@ public class ResourceProviderEntry imple // the resource provider kept in this entry supporting resources at and // below the path of this entry. - private AbstractWrappedResourceProvider[] providers = new AbstractWrappedResourceProvider[0]; + private ProviderHandler[] providers = new ProviderHandler[0]; private long ttime = 0L; @@ -75,13 +74,13 @@ public class ResourceProviderEntry imple * Creates an instance of this class with the given path relative to the * parent resource provider entry, encapsulating the given ResourceProvider, * and a number of inital child entries. - * + * * @param path * The relative path supported by the provider * @param providerList * The resource provider to encapsulate by this entry. */ - public ResourceProviderEntry(final String path, final AbstractWrappedResourceProvider[] providerList) { + public ResourceProviderEntry(final String path, final ProviderHandler[] providerList) { if (path.endsWith("/")) { this.path = path.substring(0, path.length() - 1); this.prefix = path; @@ -90,7 +89,7 @@ public class ResourceProviderEntry imple this.prefix = path + "/"; } if (providerList != null) { - providers = new AbstractWrappedResourceProvider[providerList.length]; + providers = new ProviderHandler[providerList.length]; for (int i = 0; i < providerList.length; i++) { providers[i] = providerList[i]; } @@ -108,7 +107,7 @@ public class ResourceProviderEntry imple /** * Returns the resource providers contained in this entry */ - public AbstractWrappedResourceProvider[] getResourceProviders() { + public ProviderHandler[] getResourceProviders() { return providers; } @@ -116,7 +115,7 @@ public class ResourceProviderEntry imple * Returns the resource with the given path or <code>null</code> if neither * the resource provider of this entry nor the resource provider of any of * the child entries can provide the resource. - * + * * @param path * The path to the resource to return. * @return The resource for the path or <code>null</code> if no resource can @@ -130,12 +129,12 @@ public class ResourceProviderEntry imple /** * Adds the given resource provider into the tree for the given prefix. - * + * * @return <code>true</code> if the provider could be entered into the * subtree below this entry. Otherwise <code>false</code> is * returned. */ - public synchronized boolean addResourceProvider(final String prefix, final AbstractWrappedResourceProvider provider) { + public synchronized boolean addResourceProvider(final String prefix, final ProviderHandler provider) { final String[] elements = split(prefix, '/'); final List<ResourceProviderEntry> entryPath = new ArrayList<ResourceProviderEntry>(); entryPath.add(this); // add this the start so if the list is empty @@ -143,7 +142,7 @@ public class ResourceProviderEntry imple populateProviderPath(entryPath, elements); for (int i = entryPath.size() - 1; i < elements.length; i++) { final String stubPrefix = elements[i]; - final ResourceProviderEntry rpe2 = new ResourceProviderEntry(stubPrefix, new AbstractWrappedResourceProvider[0]); + final ResourceProviderEntry rpe2 = new ResourceProviderEntry(stubPrefix, new ProviderHandler[0]); entryPath.get(i).put(stubPrefix, rpe2); entryPath.add(rpe2); } @@ -172,7 +171,7 @@ public class ResourceProviderEntry imple return storageMapValues; } - public synchronized boolean removeResourceProvider(final String prefix, final AbstractWrappedResourceProvider resourceProvider) { + public synchronized boolean removeResourceProvider(final String prefix, final ProviderHandler resourceProvider) { final String[] elements = split(prefix, '/'); final List<ResourceProviderEntry> entryPath = new ArrayList<ResourceProviderEntry>(); populateProviderPath(entryPath, elements); @@ -193,14 +192,12 @@ public class ResourceProviderEntry imple /** * Adds a list of providers to this entry. - * + * * No sync required as this is called by a sync method! - * - * @param provider */ - private boolean addInternalProvider(final AbstractWrappedResourceProvider provider) { + private boolean addInternalProvider(final ProviderHandler provider) { final int before = providers.length; - final Set<AbstractWrappedResourceProvider> set = new HashSet<AbstractWrappedResourceProvider>(); + final Set<ProviderHandler> set = new HashSet<ProviderHandler>(); if (providers != null) { set.addAll(Arrays.asList(providers)); } @@ -212,12 +209,12 @@ public class ResourceProviderEntry imple /** * Remove a provider from the list of entries. - * + * * No sync required as this is called by a sync method! */ - private boolean removeInternalProvider(final AbstractWrappedResourceProvider provider) { + private boolean removeInternalProvider(final ProviderHandler provider) { final int before = providers.length; - final Set<AbstractWrappedResourceProvider> set = new HashSet<AbstractWrappedResourceProvider>(); + final Set<ProviderHandler> set = new HashSet<ProviderHandler>(); if (providers != null) { set.addAll(Arrays.asList(providers)); } @@ -227,39 +224,21 @@ public class ResourceProviderEntry imple } /** - * @param set - * @return + * Return a sorted array of handlers. */ - private AbstractWrappedResourceProvider[] conditionalSort(final Set<AbstractWrappedResourceProvider> set) { + private ProviderHandler[] conditionalSort(final Set<ProviderHandler> set) { - final List<AbstractWrappedResourceProvider> providerList = new ArrayList<AbstractWrappedResourceProvider>(set); + final List<ProviderHandler> providerList = new ArrayList<ProviderHandler>(set); - Collections.sort(providerList, new Comparator<AbstractWrappedResourceProvider>() { + Collections.sort(providerList); - @SuppressWarnings({ "rawtypes", "unchecked" }) - public int compare(final AbstractWrappedResourceProvider o1, final AbstractWrappedResourceProvider o2) { - final Comparable c1 = o1.getComparable(); - final Comparable c2 = o2.getComparable(); - if (c1 == null && c2 == null) { - return 0; - } - if (c1 == null) { - return -1; - } - if (c2 == null) { - return 1; - } - return c1.compareTo(c2); - } - }); - - return providerList.toArray(new AbstractWrappedResourceProvider[providerList.size()]); + return providerList.toArray(new ProviderHandler[providerList.size()]); } /** * Get a of ResourceProvidersEntries leading to the fullPath in reverse * order. - * + * * @param fullPath * the full path */ @@ -281,7 +260,7 @@ public class ResourceProviderEntry imple /** * Resolve a resource from a path into a Resource - * + * * @param resolver * the ResourceResolver. * @param fullPath @@ -304,8 +283,8 @@ public class ResourceProviderEntry imple // the path is in reverse order end first for (int i = list.size() - 1; i >= 0; i--) { - final AbstractWrappedResourceProvider[] rps = list.get(i).getResourceProviders(); - for (final AbstractWrappedResourceProvider rp : rps) { + final ProviderHandler[] rps = list.get(i).getResourceProviders(); + for (final ProviderHandler rp : rps) { final Resource resource = rp.getResource(ctx, resourceResolver, fullPath); if (resource != null) { @@ -346,8 +325,8 @@ public class ResourceProviderEntry imple } Resource getResourceFromProviders(final ResourceResolverContext ctx, final ResourceResolver resourceResolver, final String fullPath) { - final AbstractWrappedResourceProvider[] rps = getResourceProviders(); - for (final AbstractWrappedResourceProvider rp : rps) { + final ProviderHandler[] rps = getResourceProviders(); + for (final ProviderHandler rp : rps) { final Resource resource = rp.getResource(ctx, resourceResolver, fullPath); if (resource != null) { nreal++; @@ -420,7 +399,7 @@ public class ResourceProviderEntry imple /** * {@inheritDoc} - * + * * @see java.util.AbstractMap#toString() */ @Override Copied: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderFactoryHandler.java (from r1345530, sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProviderFactory.java) URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderFactoryHandler.java?p2=sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderFactoryHandler.java&p1=sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProviderFactory.java&r1=1345530&r2=1345668&rev=1345668&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProviderFactory.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderFactoryHandler.java Sun Jun 3 13:17:21 2012 @@ -27,14 +27,14 @@ import org.apache.sling.api.resource.Res import org.apache.sling.api.resource.ResourceProvider; import org.apache.sling.api.resource.ResourceProviderFactory; import org.apache.sling.api.resource.ResourceResolver; -import org.osgi.framework.Constants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * + * The resource provider factory handler handles access to + * resource provider factories. */ -public class WrappedResourceProviderFactory extends AbstractWrappedResourceProvider { +public class ResourceProviderFactoryHandler extends ProviderHandler { /** The logger. */ private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -63,10 +63,11 @@ public class WrappedResourceProviderFact private final ResourceProviderFactory resourceProviderFactory; /** - * + * Create a new handler */ - public WrappedResourceProviderFactory(final ResourceProviderFactory factory, final Map<String, Object> properties) { - super(properties, "f-" + String.valueOf(properties.get(Constants.SERVICE_ID))); + public ResourceProviderFactoryHandler(final ResourceProviderFactory factory, + final Map<String, Object> properties) { + super(properties); this.resourceProviderFactory = factory; } @@ -77,7 +78,7 @@ public class WrappedResourceProviderFact * @return A resource provider or <code>null</code> */ private ResourceProvider getResourceProvider(final ResourceResolverContext ctx) { - ResourceProvider rp = ctx.getFactoryResourceProvider(this.getKey()); + ResourceProvider rp = ctx.getFactoryResourceProvider(this.getServiceId()); if ( rp == null ) { try { rp = this.login(ctx); @@ -88,7 +89,7 @@ public class WrappedResourceProviderFact logger.debug("Unable to login to " + this.getName(), le); } if ( rp == null ) { - ctx.addFactoryResourceProvider(this.getKey(), NULL_PROVIDER); + ctx.addFactoryResourceProvider(this.getServiceId(), NULL_PROVIDER); } } else if ( rp == NULL_PROVIDER ) { rp = null; @@ -133,8 +134,8 @@ public class WrappedResourceProviderFact */ @Override public boolean equals(final Object obj) { - if ( obj instanceof WrappedResourceProviderFactory ) { - return resourceProviderFactory.equals(((WrappedResourceProviderFactory) obj).resourceProviderFactory); + if ( obj instanceof ResourceProviderFactoryHandler ) { + return resourceProviderFactory.equals(((ResourceProviderFactoryHandler) obj).resourceProviderFactory); } else if ( obj instanceof ResourceProviderFactory) { return resourceProviderFactory.equals(obj); } @@ -161,18 +162,7 @@ public class WrappedResourceProviderFact } else { rp = this.resourceProviderFactory.getResourceProvider(ctx.getAuthenticationInfo()); } - ctx.addFactoryResourceProvider(this.getKey(), rp); + ctx.addFactoryResourceProvider(this.getServiceId(), rp); return rp; } - - @Override - public String getName() { - final StringBuilder snBuilder = new StringBuilder(64); - snBuilder.append('{'); - snBuilder.append(this.resourceProviderFactory.toString()); - snBuilder.append('/'); - snBuilder.append(this.getProperties().get(Constants.SERVICE_ID)); - snBuilder.append('}'); - return snBuilder.toString(); - } } Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderFactoryHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderFactoryHandler.java ------------------------------------------------------------------------------ svn:keywords = author date id revision rev url Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderFactoryHandler.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Copied: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderHandler.java (from r1345530, sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProvider.java) URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderHandler.java?p2=sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderHandler.java&p1=sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProvider.java&r1=1345530&r2=1345668&rev=1345668&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/WrappedResourceProvider.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderHandler.java Sun Jun 3 13:17:21 2012 @@ -23,20 +23,22 @@ import java.util.Map; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceProvider; import org.apache.sling.api.resource.ResourceResolver; -import org.osgi.framework.Constants; /** - * + * The resource provider handler handles access to + * resource providers. */ -public class WrappedResourceProvider extends AbstractWrappedResourceProvider { +public class ResourceProviderHandler extends ProviderHandler { + /** The handled resource provider.*/ private final ResourceProvider resourceProvider; /** - * + * Create a new handler. */ - public WrappedResourceProvider(final ResourceProvider resourceProvider, final Map<String, Object> properties) { - super(properties, "p-" + String.valueOf(properties.get(Constants.SERVICE_ID))); + public ResourceProviderHandler(final ResourceProvider resourceProvider, + final Map<String, Object> properties) { + super(properties); this.resourceProvider = resourceProvider; } @@ -69,8 +71,8 @@ public class WrappedResourceProvider ext */ @Override public boolean equals(final Object obj) { - if ( obj instanceof WrappedResourceProvider ) { - return resourceProvider.equals(((WrappedResourceProvider) obj).resourceProvider); + if ( obj instanceof ResourceProviderHandler ) { + return resourceProvider.equals(((ResourceProviderHandler) obj).resourceProvider); } else if ( obj instanceof ResourceProvider) { return resourceProvider.equals(obj); } @@ -86,15 +88,4 @@ public class WrappedResourceProvider ext public String toString() { return resourceProvider.toString(); } - - @Override - public String getName() { - final StringBuilder snBuilder = new StringBuilder(64); - snBuilder.append('{'); - snBuilder.append(this.resourceProvider.toString()); - snBuilder.append('/'); - snBuilder.append(this.getProperties().get(Constants.SERVICE_ID)); - snBuilder.append('}'); - return snBuilder.toString(); - } } Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java?rev=1345668&r1=1345667&r2=1345668&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverContext.java Sun Jun 3 13:17:21 2012 @@ -33,7 +33,7 @@ import org.apache.sling.api.resource.Res public class ResourceResolverContext { /** A map of all used providers created by a factory. */ - private final Map<String, ResourceProvider> providers = new HashMap<String, ResourceProvider>(); + private final Map<Long, ResourceProvider> providers = new HashMap<Long, ResourceProvider>(); /** A set of all dynamic providers (for closing them later on) */ private final Set<DynamicResourceProvider> dynamicProviders = new HashSet<DynamicResourceProvider>(); @@ -73,7 +73,7 @@ public class ResourceResolverContext { * @param key The unique key of the provider * @param provider The provider. */ - public void addFactoryResourceProvider(final String key, final ResourceProvider provider) { + public void addFactoryResourceProvider(final Long key, final ResourceProvider provider) { this.providers.put(key, provider); if (provider instanceof DynamicResourceProvider) { this.dynamicProviders.add((DynamicResourceProvider) provider); @@ -85,7 +85,7 @@ public class ResourceResolverContext { * @param key The unique key of a provider * @return The resource provider or <code>null</code> */ - public ResourceProvider getFactoryResourceProvider(final String key) { + public ResourceProvider getFactoryResourceProvider(final Long key) { return this.providers.get(key); } 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=1345668&r1=1345667&r2=1345668&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 Sun Jun 3 13:17:21 2012 @@ -59,7 +59,7 @@ public class RootResourceProviderEntry e private EventAdmin eventAdmin; /** Array of required factories. */ - private WrappedResourceProviderFactory[] requiredFactories = new WrappedResourceProviderFactory[0]; + private ResourceProviderFactoryHandler[] requiredFactories = new ResourceProviderFactoryHandler[0]; /** All adaptable resource providers. */ private final SortedProviderList<Adaptable> adaptableProviders = new SortedProviderList<Adaptable>(Adaptable.class); @@ -87,8 +87,8 @@ public class RootResourceProviderEntry e */ public void loginToRequiredFactories(final ResourceResolverContext ctx) throws LoginException { try { - final WrappedResourceProviderFactory[] factories = this.requiredFactories; - for (final WrappedResourceProviderFactory wrapper : factories) { + final ResourceProviderFactoryHandler[] factories = this.requiredFactories; + for (final ResourceProviderFactoryHandler wrapper : factories) { wrapper.login(ctx); } } catch (final LoginException le) { @@ -282,7 +282,7 @@ public class RootResourceProviderEntry e * Bind a resource provider. */ public void bindResourceProvider(final ResourceProvider provider, final Map<String, Object> props) { - this.bindWrapper(new WrappedResourceProvider(provider, props)); + this.bindWrapper(new ResourceProviderHandler(provider, props)); if ( provider instanceof Adaptable ) { this.adaptableProviders.add((Adaptable)provider); } @@ -298,7 +298,7 @@ public class RootResourceProviderEntry e * Unbind a resource provider. */ public void unbindResourceProvider(final ResourceProvider provider, final Map<String, Object> props) { - this.unbindWrapper(new WrappedResourceProvider(provider, props)); + this.unbindWrapper(new ResourceProviderHandler(provider, props)); if ( provider instanceof Adaptable ) { this.adaptableProviders.remove((Adaptable)provider); } @@ -314,7 +314,7 @@ public class RootResourceProviderEntry e * Bind a resource provider factory. */ public void bindResourceProviderFactory(final ResourceProviderFactory factory, final Map<String, Object> props) { - final WrappedResourceProviderFactory wrapper = new WrappedResourceProviderFactory(factory, props); + final ResourceProviderFactoryHandler wrapper = new ResourceProviderFactoryHandler(factory, props); this.bindWrapper(wrapper); this.adaptableProviders.add(wrapper); @@ -324,10 +324,10 @@ public class RootResourceProviderEntry e final boolean required = PropertiesUtil.toBoolean(props.get(ResourceProviderFactory.PROPERTY_REQUIRED), false); if (required) { synchronized (this) { - final List<WrappedResourceProviderFactory> factories = new LinkedList<WrappedResourceProviderFactory>(); + final List<ResourceProviderFactoryHandler> factories = new LinkedList<ResourceProviderFactoryHandler>(); factories.addAll(Arrays.asList(this.requiredFactories)); factories.add(wrapper); - this.requiredFactories = factories.toArray(new WrappedResourceProviderFactory[factories.size()]); + this.requiredFactories = factories.toArray(new ResourceProviderFactoryHandler[factories.size()]); } } } @@ -336,9 +336,9 @@ public class RootResourceProviderEntry e * Unbind a resource provider factory */ public void unbindResourceProviderFactory(final ResourceProviderFactory factory, final Map<String, Object> props) { - final WrappedResourceProviderFactory wrapper = new WrappedResourceProviderFactory(factory, props); + final ResourceProviderFactoryHandler wrapper = new ResourceProviderFactoryHandler(factory, props); - this.unbindWrapper(new WrappedResourceProvider(null, props)); + this.unbindWrapper(new ResourceProviderHandler(null, props)); this.adaptableProviders.remove(wrapper); this.queriableProviders.remove(wrapper); this.attributableProviders.remove(wrapper); @@ -346,10 +346,10 @@ public class RootResourceProviderEntry e final boolean required = PropertiesUtil.toBoolean(props.get(ResourceProviderFactory.PROPERTY_REQUIRED), false); if (required) { synchronized (this) { - final List<WrappedResourceProviderFactory> factories = new LinkedList<WrappedResourceProviderFactory>(); + final List<ResourceProviderFactoryHandler> factories = new LinkedList<ResourceProviderFactoryHandler>(); factories.addAll(Arrays.asList(this.requiredFactories)); factories.remove(wrapper); - this.requiredFactories = factories.toArray(new WrappedResourceProviderFactory[factories.size()]); + this.requiredFactories = factories.toArray(new ResourceProviderFactoryHandler[factories.size()]); } } } @@ -357,7 +357,7 @@ public class RootResourceProviderEntry e /** * Bind a resource provider wrapper */ - private void bindWrapper(final AbstractWrappedResourceProvider provider) { + private void bindWrapper(final ProviderHandler provider) { // this is just used for debug logging final String debugServiceName = getDebugServiceName(provider); @@ -395,7 +395,7 @@ public class RootResourceProviderEntry e /** * Unbind a resource provider wrapper */ - private void unbindWrapper(final AbstractWrappedResourceProvider provider) { + private void unbindWrapper(final ProviderHandler provider) { // this is just used for debug logging final String debugServiceName = getDebugServiceName(provider); @@ -428,7 +428,7 @@ public class RootResourceProviderEntry e logger.debug("unbindResourceProvider: Unbound {}", debugServiceName); } - private String getDebugServiceName(final AbstractWrappedResourceProvider provider) { + private String getDebugServiceName(final ProviderHandler provider) { if (logger.isDebugEnabled()) { return provider.getName(); } Modified: sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderList.java URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderList.java?rev=1345668&r1=1345667&r2=1345668&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderList.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderList.java Sun Jun 3 13:17:21 2012 @@ -55,9 +55,9 @@ public class SortedProviderList<T> { if ( this.index < list.length ) { result = list[this.index]; this.index++; - if ( result instanceof WrappedResourceProviderFactory ) { + if ( result instanceof ResourceProviderFactoryHandler ) { try { - result = ((WrappedResourceProviderFactory)result).login(ctx); + result = ((ResourceProviderFactoryHandler)result).login(ctx); if ( !genericClass.isAssignableFrom(result.getClass())) { result = null; } @@ -112,7 +112,7 @@ public class SortedProviderList<T> { } } - public void add(final WrappedResourceProviderFactory factory) { + public void add(final ResourceProviderFactoryHandler factory) { synchronized ( this ) { final List<Object> list = new LinkedList<Object>(); list.addAll(Arrays.asList(this.sortedList)); @@ -130,7 +130,7 @@ public class SortedProviderList<T> { } } - public void remove(final WrappedResourceProviderFactory factory) { + public void remove(final ResourceProviderFactoryHandler factory) { synchronized ( this ) { final List<Object> list = new LinkedList<Object>(); list.addAll(Arrays.asList(this.sortedList)); Modified: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java?rev=1345668&r1=1345667&r2=1345668&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java Sun Jun 3 13:17:21 2012 @@ -48,7 +48,7 @@ public class ResourceProviderEntryTest e rootProvider = new TestResourceProvider("/"); final Map<String, Object> props = new HashMap<String, Object>(); props.put(Constants.SERVICE_ID, "the.root"); - root = new ResourceProviderEntry("/", new WrappedResourceProvider[]{ new WrappedResourceProvider(rootProvider, props)}); + root = new ResourceProviderEntry("/", new ResourceProviderHandler[]{ new ResourceProviderHandler(rootProvider, props)}); } @Override @@ -71,7 +71,7 @@ public class ResourceProviderEntryTest e ResourceProvider first = new TestResourceProvider(firstPath); final Map<String, Object> firstProps = new HashMap<String, Object>(); firstProps.put(Constants.SERVICE_ID, "first"); - root.addResourceProvider(firstPath, new WrappedResourceProvider(first, firstProps)); + root.addResourceProvider(firstPath, new ResourceProviderHandler(first, firstProps)); assertEquals(root, root.getResource(null, null, "/")); @@ -100,9 +100,9 @@ public class ResourceProviderEntryTest e final Map<String, Object> thirdProps = new HashMap<String, Object>(); thirdProps.put(Constants.SERVICE_ID, "third"); - root.addResourceProvider(firstPath, new WrappedResourceProvider(first, firstProps)); - root.addResourceProvider(secondPath, new WrappedResourceProvider(second, secondProps)); - root.addResourceProvider(thirdPath, new WrappedResourceProvider(third, thirdProps)); + root.addResourceProvider(firstPath, new ResourceProviderHandler(first, firstProps)); + root.addResourceProvider(secondPath, new ResourceProviderHandler(second, secondProps)); + root.addResourceProvider(thirdPath, new ResourceProviderHandler(third, thirdProps)); assertEquals(rootProvider, root.getResource(null, null, "/")); @@ -132,9 +132,9 @@ public class ResourceProviderEntryTest e final Map<String, Object> thirdProps = new HashMap<String, Object>(); thirdProps.put(Constants.SERVICE_ID, "third"); - root.addResourceProvider(firstPath, new WrappedResourceProvider(first, firstProps)); - root.addResourceProvider(secondPath, new WrappedResourceProvider(second, secondProps)); - root.addResourceProvider(thirdPath, new WrappedResourceProvider(third, thirdProps)); + root.addResourceProvider(firstPath, new ResourceProviderHandler(first, firstProps)); + root.addResourceProvider(secondPath, new ResourceProviderHandler(second, secondProps)); + root.addResourceProvider(thirdPath, new ResourceProviderHandler(third, thirdProps)); assertEquals(rootProvider, root.getResource(null, null, "/")); assertEquals(first, root.getResource(null, null, "/rootel")); @@ -163,22 +163,22 @@ public class ResourceProviderEntryTest e final Map<String, Object> thirdProps = new HashMap<String, Object>(); thirdProps.put(Constants.SERVICE_ID, "third"); - root.addResourceProvider(firstPath, new WrappedResourceProvider(first, firstProps)); - root.addResourceProvider(secondPath, new WrappedResourceProvider(second, secondProps)); - root.addResourceProvider(thirdPath, new WrappedResourceProvider(third, thirdProps)); + root.addResourceProvider(firstPath, new ResourceProviderHandler(first, firstProps)); + root.addResourceProvider(secondPath, new ResourceProviderHandler(second, secondProps)); + root.addResourceProvider(thirdPath, new ResourceProviderHandler(third, thirdProps)); assertEquals(rootProvider, root.getResource(null, null, "/")); assertEquals(first, root.getResource(null, null, "/rootel/html.js")); assertEquals(second, root.getResource(null, null, "/rootel/child/html.js")); - root.removeResourceProvider(firstPath, new WrappedResourceProvider(first, firstProps)); + root.removeResourceProvider(firstPath, new ResourceProviderHandler(first, firstProps)); assertEquals(rootProvider, root.getResource(null, null, "/")); assertEquals(rootProvider, root.getResource(null, null, "/rootel/sddsf/sdfsdf/html.js")); assertEquals(rootProvider, root.getResource(null, null, "/rootel/html.js")); assertEquals(second, root.getResource(null, null, "/rootel/child/html.js")); - root.addResourceProvider(firstPath, new WrappedResourceProvider(first, firstProps)); + root.addResourceProvider(firstPath, new ResourceProviderHandler(first, firstProps)); assertEquals(rootProvider, root.getResource(null, null, "/")); assertEquals(first, root.getResource(null, null, "/rootel/html.js")); @@ -191,8 +191,8 @@ public class ResourceProviderEntryTest e protected void assertEquals(ResourceProviderEntry resProviderEntry, Resource res) { - AbstractWrappedResourceProvider[] resourceProviders = resProviderEntry.getResourceProviders(); - for ( AbstractWrappedResourceProvider rp : resourceProviders ) { + ProviderHandler[] resourceProviders = resProviderEntry.getResourceProviders(); + for ( ProviderHandler rp : resourceProviders ) { if ( rp.equals(res.getResourceResolver())) { return; }