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 2016/02/10 10:51:00 UTC
svn commit: r1729566 - in
/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger:
impl/ impl/picker/ spi/
Author: cziegeler
Date: Wed Feb 10 09:51:00 2016
New Revision: 1729566
URL: http://svn.apache.org/viewvc?rev=1729566&view=rev
Log:
SLING-5502 : Additions to MergedResourcePicker break existing implementations
Added:
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker2.java (with props)
Modified:
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergedResource.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/MergingResourcePicker.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergedResource.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergedResource.java?rev=1729566&r1=1729565&r2=1729566&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergedResource.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergedResource.java Wed Feb 10 09:51:00 2016
@@ -33,14 +33,14 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.wrappers.DeepReadValueMapDecorator;
import org.apache.sling.api.wrappers.ValueMapDecorator;
-import org.apache.sling.resourcemerger.spi.MergedResourcePicker;
+import org.apache.sling.resourcemerger.spi.MergedResourcePicker2;
/**
* {@inheritDoc}
*/
public class CRUDMergedResource extends MergedResource {
- private final MergedResourcePicker picker;
+ private final MergedResourcePicker2 picker;
private final String relativePath;
@@ -57,7 +57,7 @@ public class CRUDMergedResource extends
final String relativePath,
final List<Resource> mappedResources,
final List<ValueMap> valueMaps,
- final MergedResourcePicker picker) {
+ final MergedResourcePicker2 picker) {
super(resolver, mergeRootPath, relativePath, mappedResources, valueMaps);
this.picker = picker;
this.relativePath = relativePath;
@@ -70,7 +70,7 @@ public class CRUDMergedResource extends
@SuppressWarnings("unchecked")
public <AdapterType> AdapterType adaptTo(final Class<AdapterType> type) {
if (type == ModifiableValueMap.class) {
- final Iterator<Resource> iter = this.picker.pickResources(this.getResourceResolver(), this.relativePath).iterator();
+ final Iterator<Resource> iter = this.picker.pickResources(this.getResourceResolver(), this.relativePath, null).iterator();
Resource highestRsrc = null;
while ( iter.hasNext() ) {
highestRsrc = iter.next();
@@ -109,40 +109,49 @@ public class CRUDMergedResource extends
this.targetMap = targetMap;
}
+ @Override
public <T> T get(final String name, final Class<T> type) {
return properties.get(name, type);
}
+ @Override
public <T> T get(final String name, final T defaultValue) {
return properties.get(name, defaultValue);
}
+ @Override
public int size() {
return properties.size();
}
+ @Override
public boolean isEmpty() {
return properties.isEmpty();
}
+ @Override
public boolean containsKey(final Object key) {
return properties.containsKey(key);
}
+ @Override
public boolean containsValue(final Object value) {
return properties.containsValue(value);
}
+ @Override
public Object get(final Object key) {
return properties.get(key);
}
+ @Override
public Object put(final String key, final Object value) {
final Object result = this.properties.get(key);
this.targetMap.put(key, value);
return result;
}
+ @Override
public Object remove(final Object key) {
final Object result = this.properties.get(key);
if ( this.targetMap.remove(key) == null ) {
@@ -160,6 +169,7 @@ public class CRUDMergedResource extends
return result;
}
+ @Override
public void putAll(final Map<? extends String, ? extends Object> m) {
if ( m != null ) {
for(final Map.Entry<? extends String, ? extends Object> entry : m.entrySet()) {
@@ -168,18 +178,22 @@ public class CRUDMergedResource extends
}
}
+ @Override
public void clear() {
// not supported
}
+ @Override
public Set<String> keySet() {
return this.properties.keySet();
}
+ @Override
public Collection<Object> values() {
return this.properties.values();
}
+ @Override
public Set<Entry<String, Object>> entrySet() {
return this.properties.entrySet();
}
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java?rev=1729566&r1=1729565&r2=1729566&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/CRUDMergingResourceProvider.java Wed Feb 10 09:51:00 2016
@@ -29,7 +29,7 @@ import org.apache.sling.api.resource.Per
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.resourcemerger.spi.MergedResourcePicker;
+import org.apache.sling.resourcemerger.spi.MergedResourcePicker2;
import org.apache.sling.spi.resource.provider.ResolveContext;
import org.apache.sling.spi.resource.provider.ResourceContext;
@@ -40,7 +40,7 @@ public class CRUDMergingResourceProvider
extends MergingResourceProvider {
public CRUDMergingResourceProvider(final String mergeRootPath,
- final MergedResourcePicker picker,
+ final MergedResourcePicker2 picker,
final boolean traverseHierarchie) {
super(mergeRootPath, picker, false, traverseHierarchie);
}
@@ -64,7 +64,7 @@ public class CRUDMergingResourceProvider
// Loop over resources
boolean isUnderlying = true;
- final Iterator<Resource> iter = this.picker.pickResources(resolver, relativePath).iterator();
+ final Iterator<Resource> iter = this.picker.pickResources(resolver, relativePath, null).iterator();
while ( iter.hasNext() ) {
final Resource rsrc = iter.next();
holder.count++;
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java?rev=1729566&r1=1729565&r2=1729566&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java Wed Feb 10 09:51:00 2016
@@ -20,14 +20,18 @@ package org.apache.sling.resourcemerger.
import java.util.Dictionary;
import java.util.Hashtable;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.resourcemerger.spi.MergedResourcePicker;
+import org.apache.sling.resourcemerger.spi.MergedResourcePicker2;
import org.apache.sling.spi.resource.provider.ResourceProvider;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
@@ -48,7 +52,8 @@ public class MergedResourcePickerWhitebo
@Activate
protected void activate(final BundleContext bundleContext) {
this.bundleContext = bundleContext;
- tracker = new ServiceTracker(bundleContext, MergedResourcePicker.class.getName(), this);
+ tracker = new ServiceTracker(bundleContext, "(|(objectClass=" + MergedResourcePicker.class.getName() +
+ ")(objectClass=" + MergedResourcePicker2.class.getName() + "))", this);
tracker.open();
}
@@ -59,12 +64,26 @@ public class MergedResourcePickerWhitebo
@Override
public Object addingService(final ServiceReference reference) {
- final MergedResourcePicker picker = (MergedResourcePicker) bundleContext.getService(reference);
- if ( picker != null ) {
- final String mergeRoot = PropertiesUtil.toString(reference.getProperty(MergedResourcePicker.MERGE_ROOT), null);
+ final Object pickerObj = bundleContext.getService(reference);
+ if ( pickerObj != null ) {
+ final String mergeRoot = PropertiesUtil.toString(reference.getProperty(MergedResourcePicker2.MERGE_ROOT), null);
if (mergeRoot != null) {
- boolean readOnly = PropertiesUtil.toBoolean(reference.getProperty(MergedResourcePicker.READ_ONLY), true);
- boolean traverseParent = PropertiesUtil.toBoolean(reference.getProperty(MergedResourcePicker.TRAVERSE_PARENT), false);
+ boolean readOnly = PropertiesUtil.toBoolean(reference.getProperty(MergedResourcePicker2.READ_ONLY), true);
+ boolean traverseParent = PropertiesUtil.toBoolean(reference.getProperty(MergedResourcePicker2.TRAVERSE_PARENT), false);
+
+ final MergedResourcePicker2 picker;
+ if ( pickerObj instanceof MergedResourcePicker2 ) {
+ picker = (MergedResourcePicker2)pickerObj;
+ } else {
+ final MergedResourcePicker deprecatedPicker = (MergedResourcePicker)pickerObj;
+ picker = new MergedResourcePicker2() {
+
+ @Override
+ public List<Resource> pickResources(ResourceResolver resolver, String relativePath, Resource relatedResource) {
+ return deprecatedPicker.pickResources(resolver, relativePath);
+ }
+ };
+ }
MergingResourceProvider provider = readOnly ?
new MergingResourceProvider(mergeRoot, picker, true, traverseParent) :
@@ -81,7 +100,7 @@ public class MergedResourcePickerWhitebo
serviceRegistrations.put(key, reg);
}
- return picker;
+ return pickerObj;
}
return null;
}
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java?rev=1729566&r1=1729565&r2=1729566&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java Wed Feb 10 09:51:00 2016
@@ -26,7 +26,7 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.ValueMap;
-import org.apache.sling.resourcemerger.spi.MergedResourcePicker;
+import org.apache.sling.resourcemerger.spi.MergedResourcePicker2;
import org.apache.sling.spi.resource.provider.ResolveContext;
import org.apache.sling.spi.resource.provider.ResourceContext;
import org.apache.sling.spi.resource.provider.ResourceProvider;
@@ -35,14 +35,14 @@ public class MergingResourceProvider ext
protected final String mergeRootPath;
- protected final MergedResourcePicker picker;
+ protected final MergedResourcePicker2 picker;
private final boolean readOnly;
protected final boolean traverseHierarchie;
MergingResourceProvider(final String mergeRootPath,
- final MergedResourcePicker picker,
+ final MergedResourcePicker2 picker,
final boolean readOnly,
final boolean traverseHierarchie) {
this.mergeRootPath = mergeRootPath;
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/MergingResourcePicker.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/MergingResourcePicker.java?rev=1729566&r1=1729565&r2=1729566&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/MergingResourcePicker.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/MergingResourcePicker.java Wed Feb 10 09:51:00 2016
@@ -35,18 +35,18 @@ import org.apache.sling.commons.osgi.Pro
import org.apache.sling.resourcemerger.api.ResourceMergerService;
import org.apache.sling.resourcemerger.impl.MergedResource;
import org.apache.sling.resourcemerger.impl.MergedResourceConstants;
-import org.apache.sling.resourcemerger.spi.MergedResourcePicker;
+import org.apache.sling.resourcemerger.spi.MergedResourcePicker2;
@Component(name="org.apache.sling.resourcemerger.impl.MergedResourceProviderFactory",
label = "Apache Sling Merged Resource Provider Factory",
description = "This resource provider delivers merged resources based on the search paths.",
metatype=true)
-@Service(value={MergedResourcePicker.class, ResourceMergerService.class})
+@Service(value={MergedResourcePicker2.class, ResourceMergerService.class})
@Properties({
- @Property(name=MergedResourcePicker.MERGE_ROOT, value=MergingResourcePicker.DEFAULT_ROOT,
+ @Property(name=MergedResourcePicker2.MERGE_ROOT, value=MergingResourcePicker.DEFAULT_ROOT,
label="Root",
description="The mount point of merged resources"),
- @Property(name=MergedResourcePicker.READ_ONLY, boolValue=true,
+ @Property(name=MergedResourcePicker2.READ_ONLY, boolValue=true,
label="Read Only",
description="Specifies if the resources are read-only or can be modified.")
@@ -55,7 +55,7 @@ import org.apache.sling.resourcemerger.s
* The <code>MergedResourceProviderFactory</code> creates merged resource
* providers and implements the <code>ResourceMergerService</code>.
*/
-public class MergingResourcePicker implements MergedResourcePicker, ResourceMergerService {
+public class MergingResourcePicker implements MergedResourcePicker2, ResourceMergerService {
public static final String DEFAULT_ROOT = "/mnt/overlay";
@@ -122,14 +122,10 @@ public class MergingResourcePicker imple
return (resource != null) ? resource : new NonExistingResource(resolver, path);
}
- @Override
- public List<Resource> pickResources(ResourceResolver resolver, String relativePath) {
- return pickResources(resolver, relativePath, null);
- }
-
/**
* {@inheritDoc}
*/
+ @Override
public String getMergedResourcePath(final String relativePath) {
if (relativePath == null) {
throw new IllegalArgumentException("Provided relative path is null");
@@ -145,6 +141,7 @@ public class MergingResourcePicker imple
/**
* {@inheritDoc}
*/
+ @Override
public Resource getMergedResource(final Resource resource) {
if (resource != null) {
final ResourceResolver resolver = resource.getResourceResolver();
@@ -162,6 +159,7 @@ public class MergingResourcePicker imple
/**
* {@inheritDoc}
*/
+ @Override
public boolean isMergedResource(final Resource resource) {
if (resource == null) {
return false;
@@ -173,6 +171,7 @@ public class MergingResourcePicker imple
/**
* {@inheritDoc}
*/
+ @Override
public String getResourcePath(final String searchPath, final String mergedResourcePath) {
if( searchPath == null || !searchPath.startsWith("/") || !searchPath.endsWith("/") ) {
throw new IllegalArgumentException("Provided path is not a valid search path: " + searchPath);
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java?rev=1729566&r1=1729565&r2=1729566&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/picker/OverridingResourcePicker.java Wed Feb 10 09:51:00 2016
@@ -32,7 +32,7 @@ import org.apache.felix.scr.annotations.
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.resourcemerger.impl.StubResource;
-import org.apache.sling.resourcemerger.spi.MergedResourcePicker;
+import org.apache.sling.resourcemerger.spi.MergedResourcePicker2;
@Component(name = "org.apache.sling.resourcemerger.picker.overriding",
label = "Apache Sling Overriding Resource Picker",
@@ -40,14 +40,14 @@ import org.apache.sling.resourcemerger.s
metatype = true, policy = ConfigurationPolicy.REQUIRE)
@Service
@Properties({
- @Property(name = MergedResourcePicker.MERGE_ROOT, value = OverridingResourcePicker.DEFAULT_ROOT,
+ @Property(name = MergedResourcePicker2.MERGE_ROOT, value = OverridingResourcePicker.DEFAULT_ROOT,
label = "Root", description = "Root path at which merged resources will be available."),
- @Property(name=MergedResourcePicker.READ_ONLY, boolValue=true,
+ @Property(name=MergedResourcePicker2.READ_ONLY, boolValue=true,
label="Read Only",
description="Specifies if the resources are read-only or can be modified."),
- @Property(name=MergedResourcePicker.TRAVERSE_PARENT, boolValue=true, propertyPrivate=true)
+ @Property(name=MergedResourcePicker2.TRAVERSE_PARENT, boolValue=true, propertyPrivate=true)
})
-public class OverridingResourcePicker implements MergedResourcePicker {
+public class OverridingResourcePicker implements MergedResourcePicker2 {
public static final String DEFAULT_ROOT = "/mnt/override";
@@ -98,11 +98,6 @@ public class OverridingResourcePicker im
return resources;
}
- @Override
- public List<Resource> pickResources(ResourceResolver resolver, String relativePath) {
- return pickResources(resolver, relativePath, null);
- }
-
private void findInheritanceRoot(final Resource target, final InheritanceRootInfo info) {
String superType = target.getResourceSuperType();
if (superType != null) {
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java?rev=1729566&r1=1729565&r2=1729566&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker.java Wed Feb 10 09:51:00 2016
@@ -30,7 +30,9 @@ import aQute.bnd.annotation.ConsumerType
* Service interface which can be implemented to define an algorithm used to pick
* resources to be merged. For each picker service, a separate {@link ResourceProviderFactory}
* will be exposed at the MERGE_ROOT of the picker.
+ * @deprecated
*/
+@Deprecated
@ConsumerType
public interface MergedResourcePicker {
@@ -40,7 +42,7 @@ public interface MergedResourcePicker {
* The value of this service property must be of type String and must not end
* in a slash.
*/
- String MERGE_ROOT = "merge.root";
+ String MERGE_ROOT = MergedResourcePicker2.MERGE_ROOT;
/**
* Service property name specifying whether the resources are read-only
@@ -48,7 +50,7 @@ public interface MergedResourcePicker {
* to <code>true</code>. The value of this property must be of type
* Boolean.
*/
- String READ_ONLY = "merge.readOnly";
+ String READ_ONLY = MergedResourcePicker2.READ_ONLY;
/**
* Service property name specifying whether the parent hierarchy is
@@ -56,24 +58,10 @@ public interface MergedResourcePicker {
* property defaults to <code>false</code>. The value of this
* property must be of type Boolean.
*/
- String TRAVERSE_PARENT = "merge.traverseParent";
+ String TRAVERSE_PARENT = MergedResourcePicker2.TRAVERSE_PARENT;
/**
* @see #pickResources(ResourceResolver, String, Resource)
- * @deprecated
*/
List<Resource> pickResources(ResourceResolver resolver, String relativePath);
-
- /**
- * Method invoked by the MergingResourceProvider to identify the resources to be merged for a given
- * relative path. The resources returned may be either resources returned from the ResourceResolver
- * directory or an instance of NonExistingResource.
- *
- * @param resolver the ResourceResolver
- * @param relativePath the path relative to the merge root
- * @param relatedResource an optional resource which is related to the given path (parent or child)
- * @return a List of Resource objects
- */
- List<Resource> pickResources(ResourceResolver resolver, String relativePath, Resource relatedResource);
-
}
Added: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker2.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker2.java?rev=1729566&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker2.java (added)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker2.java Wed Feb 10 09:51:00 2016
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.resourcemerger.spi;
+
+import java.util.List;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceProviderFactory;
+import org.apache.sling.api.resource.ResourceResolver;
+
+import aQute.bnd.annotation.ConsumerType;
+
+/**
+ * Service interface which can be implemented to define an algorithm used to pick
+ * resources to be merged. For each picker service, a separate {@link ResourceProviderFactory}
+ * will be exposed at the MERGE_ROOT of the picker.
+ *
+ * @since 1.2
+ */
+@ConsumerType
+public interface MergedResourcePicker2 {
+
+ /**
+ * Service property name identifying the root path for the merged resources.
+ * By convention, starts, with /mnt, although this is by no means required.
+ * The value of this service property must be of type String and must not end
+ * in a slash.
+ */
+ String MERGE_ROOT = "merge.root";
+
+ /**
+ * Service property name specifying whether the resources are read-only
+ * or support CRUD operations. If not specified this property defaults
+ * to <code>true</code>. The value of this property must be of type
+ * Boolean.
+ */
+ String READ_ONLY = "merge.readOnly";
+
+ /**
+ * Service property name specifying whether the parent hierarchy is
+ * traversed to check for hiding properties. If not specified this
+ * property defaults to <code>false</code>. The value of this
+ * property must be of type Boolean.
+ */
+ String TRAVERSE_PARENT = "merge.traverseParent";
+
+ /**
+ * Method invoked by the MergingResourceProvider to identify the resources to be merged for a given
+ * relative path. The resources returned may be either resources returned from the ResourceResolver
+ * directory or an instance of NonExistingResource.
+ *
+ * @param resolver the ResourceResolver
+ * @param relativePath the path relative to the merge root
+ * @param relatedResource an optional resource which is related to the given path (parent or child)
+ * @return a List of Resource objects
+ */
+ List<Resource> pickResources(ResourceResolver resolver, String relativePath, Resource relatedResource);
+}
Propchange: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker2.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/MergedResourcePicker2.java
------------------------------------------------------------------------------
svn:keywords = author date id revision rev url
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java?rev=1729566&r1=1729565&r2=1729566&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/spi/package-info.java Wed Feb 10 09:51:00 2016
@@ -20,7 +20,7 @@
/**
* Provides a service to merge multiple physical resources into a single one
*/
-@Version("2.0.0")
+@Version("1.2")
package org.apache.sling.resourcemerger.spi;
import aQute.bnd.annotation.Version;