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 2017/08/09 15:41:09 UTC

svn commit: r1804554 - in /sling/trunk/contrib/extensions/collection: ./ src/main/java/org/apache/sling/resource/collection/ src/main/java/org/apache/sling/resource/collection/impl/

Author: cziegeler
Date: Wed Aug  9 15:41:09 2017
New Revision: 1804554

URL: http://svn.apache.org/viewvc?rev=1804554&view=rev
Log:
SLING-7040 : Update commons lang 2.x to 3.5

Modified:
    sling/trunk/contrib/extensions/collection/pom.xml
    sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java
    sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java
    sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java
    sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java
    sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java

Modified: sling/trunk/contrib/extensions/collection/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/collection/pom.xml?rev=1804554&r1=1804553&r2=1804554&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/collection/pom.xml (original)
+++ sling/trunk/contrib/extensions/collection/pom.xml Wed Aug  9 15:41:09 2017
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>26</version>
+        <version>31</version>
         <relativePath/>
     </parent>
 
@@ -54,10 +54,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-scr-plugin</artifactId>
-            </plugin>
-            <plugin>
                 <groupId>org.apache.sling</groupId>
                 <artifactId>maven-sling-plugin</artifactId>
             </plugin>
@@ -99,28 +95,23 @@
             <version>2.2.6</version>
             <scope>provided</scope>
         </dependency>
-
-        <!-- OSGI -->
         <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.5</version>
+            <scope>provided</scope>
         </dependency>
+
+        <!-- OSGI -->
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <artifactId>osgi.core</artifactId>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>
         
-        <!-- Felix -->
-       <dependency>
-           <groupId>org.apache.felix</groupId>
-           <artifactId>org.apache.felix.scr.annotations</artifactId>
-           <scope>provided</scope>
-       </dependency>
-       
        <!-- Testing -->
         <dependency>
             <groupId>org.slf4j</groupId>
@@ -133,14 +124,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-            <version>2.4</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
+            <artifactId>javax.servlet-api</artifactId>
             <scope>test</scope>
         </dependency>
          <dependency>

Modified: sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java?rev=1804554&r1=1804553&r2=1804554&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java (original)
+++ sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java Wed Aug  9 15:41:09 2017
@@ -16,114 +16,116 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.sling.resource.collection;
+
 import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.sling.api.resource.ModifiableValueMap;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
- * ResourceCollection is an ordered collection of {@link Resource}. 
+ * ResourceCollection is an ordered collection of {@link Resource}.
  * The collection does not store the actual Resources, it only points to
- * them. 
- * 
- * Each entry in the collection is represented by a Resource which contains a 
- * reference to original resource. That reference Resource can have additional 
+ * them.
+ *
+ * Each entry in the collection is represented by a Resource which contains a
+ * reference to original resource. That reference Resource can have additional
  * properties (creationDate, etc.)
  */
+@ProviderType
 public interface ResourceCollection {
-    
+
 	/**
 	 * Sling resource type for resource representing a </code>ResourceCollection<code>
 	 */
     public static final String RESOURCE_TYPE = "sling/collection";
-    
+
     /**
      * Returns name of the collection.
-     * 
+     *
      * @return name of the collection.
      */
     public String getName();
-    
+
     /**
      * Returns path of the collection.
-     * 
+     *
      * @return path of the collection.
      */
     public String getPath();
-	
+
     /**
      * Returns an iterator over resources referred in the collection in the specified order.
      *
      * @return iterator over resources referred in collection.
      */
     Iterator<Resource> getResources();
-    
+
     /**
      * Returns additional properties for a particular resource in Collection entry.
-     * 
+     *
      * @return properties of the Collection entry as <code>ModifiableValueMap</code>, returns null if entry found.
      */
     ModifiableValueMap getProperties(Resource resource);
-    
+
     /**
      * Returns true if resource reference is part of the collection.
-     * 
+     *
      * @param resource resource to be checked
      * @return true if resource is part of the collection.
      *         false otherwise
      */
     boolean contains(Resource resource);
-    
+
     /**
-     * Creates a new entry in the collection at the last position and add a reference to resource 
-     * in the entry.  
+     * Creates a new entry in the collection at the last position and add a reference to resource
+     * in the entry.
      * Changes are transient & have to be saved by calling resolver.commit()
-     * 
+     *
      * @param resource resource to be added
      * @param properties The additional properties to be stored with the collection entry (can be null).
-     * @return true if addition of resource to collection was successful or 
+     * @return true if addition of resource to collection was successful or
      *         false if collection already contained the resource or resource is null.
-     * 
+     *
      * @throws {@link PersistenceException} if the operation fails
      */
     boolean add(Resource resource, Map<String, Object> properties) throws PersistenceException;
-    
+
     /**
-     * Creates a new entry in the collection at the last position and add a reference to resource 
-     * in the entry.  
+     * Creates a new entry in the collection at the last position and add a reference to resource
+     * in the entry.
      * Changes are transient & have to be saved by calling resolver.commit()
-     * 
+     *
      * @param resource resource to be added
-     * @return true if addition of resource to collection was successful or 
+     * @return true if addition of resource to collection was successful or
      *         false if collection already contained the resource or resource is null.
-     * 
+     *
      * @throws {@link PersistenceException} if the operation fails
      */
     boolean add(Resource resource) throws PersistenceException;
-    
-      
+
+
     /**
-     * Removes a entry of resource from collection & returns true if successful. 
+     * Removes a entry of resource from collection & returns true if successful.
      * Changes are transient & have to be saved by calling resolver.commit()
-     * 
+     *
      * @param resource resource reference to be removed
      * @return true if resource reference was successfully removed from the collection.
      *         false if not removed/not present
-     * 
+     *
      * @throws {@link PersistenceException} if the operation fails
      */
-    boolean remove(Resource resource) throws PersistenceException; 
-    
+    boolean remove(Resource resource) throws PersistenceException;
+
     /**
      * This method inserts the referenced resource <code>srcResource</code>
-     * into the collection entry at the position immediately before the referenced resource <code>destResource</code>. 
-     * 
+     * into the collection entry at the position immediately before the referenced resource <code>destResource</code>.
+     *
      * To insert the referenced resource into last position, <code>destResource</code> can be null.
-     * 
+     *
      * @param srcResource Referenced resource that needs to be moved in the order
      * @param destResource Referenced resource before which the <code>srcResource</code> will be placed.
      */

Modified: sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java?rev=1804554&r1=1804553&r2=1804554&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java (original)
+++ sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java Wed Aug  9 15:41:09 2017
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.sling.resource.collection;
 
 import java.util.Map;
@@ -24,6 +23,7 @@ import java.util.Map;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * The <code>ResourceCollectionManager<code> defines the API to get, create and delete
@@ -32,6 +32,7 @@ import org.apache.sling.api.resource.Res
  * The ResourceCollectionManager service can be retrieved by looking it up from the
  * service registry or by adapting a {@link ResourceResolver}.
  */
+@ProviderType
 public interface ResourceCollectionManager {
 
     /**

Modified: sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java?rev=1804554&r1=1804553&r2=1804554&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java (original)
+++ sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java Wed Aug  9 15:41:09 2017
@@ -19,15 +19,14 @@
 
 package org.apache.sling.resource.collection.impl;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.adapter.AdapterFactory;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.resource.collection.ResourceCollection;
 import org.apache.sling.resource.collection.ResourceCollectionManager;
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -35,34 +34,29 @@ import org.slf4j.LoggerFactory;
  * AdapterFactory that adapts Resources to: {@link ResourceCollection}
  * And ResourceResolver to: {@link ResourceCollectionManager)
  */
-@Component
-@Service
-@Property(name = "service.description", value = "Collection Adapter Factory")
+@Component(service = AdapterFactory.class,
+    property = {
+            Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+            Constants.SERVICE_DESCRIPTION + "=Apache Sling Resource Collection Adapter Factory",
+            "adapters=org.apache.sling.resource.collection.ResourceCollection",
+            "adapters=org.apache.sling.resource.collection.ResourceCollectionManager",
+            "adaptables=org.apache.sling.api.resource.Resource",
+            "adaptables=org.apache.sling.api.resource.ResourceResolver"
+    })
 public class ResourceCollectionAdapterFactory implements AdapterFactory {
 
-    private static final Logger log = LoggerFactory.getLogger(ResourceCollectionAdapterFactory.class);
+    private final Logger log = LoggerFactory.getLogger(ResourceCollectionAdapterFactory.class);
 
     private static final Class<ResourceCollection> COLLECTION_CLASS = ResourceCollection.class;
 
     private static final Class<ResourceCollectionManager> COLLECTION_MGR_CLASS = ResourceCollectionManager.class;
 
-    @Property(name = "adapters")
-    public static final String[] ADAPTER_CLASSES = {
-        COLLECTION_CLASS.getName(), COLLECTION_MGR_CLASS.getName()
-
-    };
-
-    @Property(name = "adaptables")
-    public static final String[] ADAPTABLE_CLASSES = {
-        Resource.class.getName(), ResourceResolver.class.getName()
-
-    };
-
     @Reference
     private ResourceCollectionManager collectionManager;
 
     // ---------- AdapterFactory -----------------------------------------------
 
+    @Override
     public <AdapterType> AdapterType getAdapter(Object adaptable,
             Class<AdapterType> type) {
         if (adaptable instanceof Resource) {

Modified: sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java?rev=1804554&r1=1804553&r2=1804554&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java (original)
+++ sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java Wed Aug  9 15:41:09 2017
@@ -26,7 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.sling.api.resource.ModifiableValueMap;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
@@ -34,11 +34,10 @@ import org.apache.sling.api.resource.Res
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.jcr.resource.JcrResourceConstants;
+import org.apache.sling.resource.collection.ResourceCollection;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.sling.resource.collection.ResourceCollection;
-
 /**
  * Implements <code>ResourceCollection</code>
  *
@@ -67,7 +66,7 @@ public class ResourceCollectionImpl impl
 
     /**
      * Creates a new collection from the given resource
-     * 
+     *
      * @param resource the resource
      */
     public ResourceCollectionImpl(Resource resource) {
@@ -75,10 +74,11 @@ public class ResourceCollectionImpl impl
         resolver = resource.getResourceResolver();
         membersResource = resource.getChild(ResourceCollectionConstants.MEMBERS_NODE_NAME);
     }
-    
+
     /**
      * {@inheritDoc}
      */
+    @Override
     public String getName() {
         return resource.getName();
     }
@@ -86,6 +86,7 @@ public class ResourceCollectionImpl impl
     /**
      * {@inheritDoc}
      */
+    @Override
     public String getPath() {
         return resource.getPath();
     }
@@ -93,16 +94,17 @@ public class ResourceCollectionImpl impl
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean add(Resource res, Map<String, Object> properties) throws PersistenceException {
         if (res != null && !contains(res)) {
         	ModifiableValueMap vm = membersResource.adaptTo(ModifiableValueMap.class);
         	String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[]{});
-        	
-        	order = (String[]) ArrayUtils.add(order, res.getPath());
+
+        	order = ArrayUtils.add(order, res.getPath());
         	vm.put(ResourceCollectionConstants.REFERENCES_PROP, order);
-        	
+
         	if (properties == null) {
-        		properties = new HashMap<String, Object>();
+        		properties = new HashMap<>();
         	}
             properties.put(ResourceCollectionConstants.REF_PROPERTY, res.getPath());
             resolver.create(
@@ -116,19 +118,20 @@ public class ResourceCollectionImpl impl
 
         return false;
     }
-    
+
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean add(Resource res) throws PersistenceException {
         if (res != null && !contains(res)) {
         	ModifiableValueMap vm = membersResource.adaptTo(ModifiableValueMap.class);
         	String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[]{});
-        	
-        	order = (String[]) ArrayUtils.add(order, res.getPath());
+
+        	order = ArrayUtils.add(order, res.getPath());
         	vm.put(ResourceCollectionConstants.REFERENCES_PROP, order);
-        	
-        	Map<String, Object> properties = new HashMap<String, Object>();
+
+        	Map<String, Object> properties = new HashMap<>();
         	properties.put(ResourceCollectionConstants.REF_PROPERTY, res.getPath());
             resolver.create(
                 membersResource,
@@ -142,30 +145,31 @@ public class ResourceCollectionImpl impl
         return false;
     }
 
-    
+
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public Iterator<Resource> getResources() {
-    	
+
     	ValueMap vm = membersResource.adaptTo(ValueMap.class);
     	String[] references = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[]{});
-    	List<Resource> resources = new ArrayList<Resource>();
-    	
+    	List<Resource> resources = new ArrayList<>();
+
         for (String path:references) {
         	Resource resource = resolver.getResource(path);
         	if (resource != null){
         		resources.add(resource);
         	}
         }
-        
+
 		return resources.iterator();
     }
 
     /**
      * Returns the sling resource type on content node of collection
-     * 
+     *
      * @param
      * @return <code>sling:resourceType</code> for the collection resource
      */
@@ -176,22 +180,24 @@ public class ResourceCollectionImpl impl
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean contains(Resource res) {
     	if (res != null) {
     		ValueMap vm = membersResource.adaptTo(ValueMap.class);
         	String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[]{});
-        	
+
         	int index = ArrayUtils.indexOf(order, res.getPath(), 0);
-        	
+
         	return index >= 0 ? true: false;
     	}
-    	
+
     	return false;
     }
 
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean remove(Resource res) throws PersistenceException {
     	//remove the resource
         Resource tobeRemovedRes = findRes(res);
@@ -202,18 +208,18 @@ public class ResourceCollectionImpl impl
         //remove from order array
         ModifiableValueMap vm = membersResource.adaptTo(ModifiableValueMap.class);
     	String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[]{});
-    	
+
     	int index = ArrayUtils.indexOf(order, res.getPath(), 0);
-    	
-    	order = (String[]) ArrayUtils.remove(order, index);
+
+    	order = ArrayUtils.remove(order, index);
     	vm.put(ResourceCollectionConstants.REFERENCES_PROP, order);
-    	
+
     	return true;
     }
 
     /**
      * Sets the sling resource type on content node of collection
-     * 
+     *
      * @param type <code>sling:resourceType</code> to be set on the content node
      * @return
      */
@@ -240,7 +246,8 @@ public class ResourceCollectionImpl impl
         return null;
     }
 
-   	public void orderBefore(Resource srcResource, Resource destResource) {
+   	@Override
+    public void orderBefore(Resource srcResource, Resource destResource) {
 		if (srcResource == null) {
 			throw new IllegalArgumentException("Source Resource can not be null");
 		}
@@ -249,54 +256,55 @@ public class ResourceCollectionImpl impl
     	String srcPath = srcResource.getPath();
 		int srcIndex = ArrayUtils.indexOf(order, srcPath);
     	if (srcIndex < 0) {
-    		log.warn("Collection ordering failed, as there is no resource {} in collection {} for destResource", 
+    		log.warn("Collection ordering failed, as there is no resource {} in collection {} for destResource",
     				srcPath, getPath());
-    		return ; 
+    		return ;
     	}
 		if (destResource == null) {
 			//add it to the end.
-			order = (String[]) ArrayUtils.remove(order, srcIndex);
-			order = (String[]) ArrayUtils.add(order, srcPath);
+			order = ArrayUtils.remove(order, srcIndex);
+			order = ArrayUtils.add(order, srcPath);
 		} else {
 			String destPath = destResource.getPath();
-			
+
 			if (destPath.equals(srcPath)) {
-				String message = MessageFormat.format("Collection ordering failed, as source {0} and destination {1} can not be same", 
+				String message = MessageFormat.format("Collection ordering failed, as source {0} and destination {1} can not be same",
 	    				srcPath, destPath);
 				log.error(message);
 				throw new IllegalArgumentException(message);
 			}
-			
+
 			int destIndex = ArrayUtils.indexOf(order, destPath);
-			
+
 			if (destIndex < 0) {
-				log.warn("Collection ordering failed, as there is no resource {} in collection {} for destResource", 
+				log.warn("Collection ordering failed, as there is no resource {} in collection {} for destResource",
 						destPath, getPath());
 				return;
 			}
-			
-			order = (String[]) ArrayUtils.remove(order, srcIndex);
+
+			order = ArrayUtils.remove(order, srcIndex);
 			if (srcIndex < destIndex) { //recalculate dest index
 				destIndex = ArrayUtils.indexOf(order, destPath);
 			}
-			order = (String[]) ArrayUtils.add(order, destIndex, srcPath);
+			order = ArrayUtils.add(order, destIndex, srcPath);
 		}
-		
+
 		vm.put(ResourceCollectionConstants.REFERENCES_PROP, order);
 	}
 
-	public ModifiableValueMap getProperties(Resource resource) {
+	@Override
+    public ModifiableValueMap getProperties(Resource resource) {
 		Iterator<Resource> entries = membersResource.listChildren();
         while (entries.hasNext()) {
         	Resource entry = entries.next();
         	String path = ResourceUtil.getValueMap(entry).get(
         			ResourceCollectionConstants.REF_PROPERTY, "");
-            
+
             if (resource.getPath().equals(path)) {
             	return entry.adaptTo(ModifiableValueMap.class);
             }
         }
-        
+
         return null;
 	}
 }

Modified: sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java?rev=1804554&r1=1804553&r2=1804554&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java (original)
+++ sling/trunk/contrib/extensions/collection/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java Wed Aug  9 15:41:09 2017
@@ -22,14 +22,14 @@ package org.apache.sling.resource.collec
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.jcr.resource.JcrResourceConstants;
 import org.apache.sling.resource.collection.ResourceCollection;
 import org.apache.sling.resource.collection.ResourceCollectionManager;
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,8 +41,10 @@ import org.slf4j.LoggerFactory;
  * This service can be retrieved by looking it up from the
  * service registry or by adapting a {@link ResourceResolver}.
  */
-@Component
-@Service(value=ResourceCollectionManager.class)
+@Component(service=ResourceCollectionManager.class,
+    property = {
+            Constants.SERVICE_VENDOR + "=The Apache Software Foundation"
+    })
 public class ResourceCollectionManagerImpl implements ResourceCollectionManager {
 
     private final Logger log = LoggerFactory.getLogger(this.getClass());
@@ -50,6 +52,7 @@ public class ResourceCollectionManagerIm
     /**
      * {@inheritDoc}
      */
+    @Override
     public ResourceCollection getCollection(Resource resource) {
     	if (resource != null) {
     		if (resource.isResourceType(ResourceCollection.RESOURCE_TYPE)) {
@@ -65,6 +68,7 @@ public class ResourceCollectionManagerIm
     /**
      * {@inheritDoc}
      */
+    @Override
     public ResourceCollection createCollection(Resource parentResource, String name)
             throws PersistenceException {
         return createCollection(parentResource, name, null);
@@ -73,6 +77,7 @@ public class ResourceCollectionManagerIm
     /**
      * {@inheritDoc}
      */
+    @Override
     public ResourceCollection createCollection(Resource parentResource, String name,
             Map<String, Object> properties) throws PersistenceException {
 
@@ -85,7 +90,7 @@ public class ResourceCollectionManagerIm
             }
 
             if (properties == null) {
-                properties = new HashMap<String, Object>();
+                properties = new HashMap<>();
             }
 
             if (properties.get(JcrResourceConstants.SLING_RESOURCE_TYPE_PROPERTY) != null
@@ -115,6 +120,7 @@ public class ResourceCollectionManagerIm
      *
      * @throws PersistenceException
      */
+    @Override
     public boolean deleteCollection(Resource resource)
             throws PersistenceException {
     	if (resource != null) {