This is an automated email from the ASF dual-hosted git repository. sseifert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourcecollection.git
commit ff463d251d00d12d90ceee781c49c1df811e78fd Author: Stefan Seifert <[email protected]> AuthorDate: Wed Feb 26 12:08:57 2025 +0100 SLING-12677 apply spotless formatting --- pom.xml | 14 +- .../resource/collection/ResourceCollection.java | 9 +- .../collection/ResourceCollectionManager.java | 6 +- .../impl/ResourceCollectionAdapterFactory.java | 27 +-- .../impl/ResourceCollectionConstants.java | 6 +- .../collection/impl/ResourceCollectionImpl.java | 203 ++++++++++----------- .../impl/ResourceCollectionManagerImpl.java | 67 ++++--- .../impl/util/ResourceCollectionUtil.java | 11 +- .../sling/resource/collection/package-info.java | 2 - .../impl/ResourceCollectionImplTest.java | 196 +++++++++++--------- 10 files changed, 272 insertions(+), 269 deletions(-) diff --git a/pom.xml b/pom.xml index 9bd967b..ccb2244 100755 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file @@ -37,15 +37,13 @@ <version>1.0.5-SNAPSHOT</version> <name>Apache Sling Resource Collection API</name> - <description> - The Apache Sling resource collection bundle provides an api to manage collections of Resources. - </description> + <description>The Apache Sling resource collection bundle provides an api to manage collections of Resources.</description> <scm> <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourcecollection.git</connection> <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourcecollection.git</developerConnection> - <url>https://github.com/apache/sling-org-apache-sling-resourcecollection.git</url> <tag>HEAD</tag> + <url>https://github.com/apache/sling-org-apache-sling-resourcecollection.git</url> </scm> <properties> @@ -98,8 +96,8 @@ <artifactId>slf4j-api</artifactId> <scope>provided</scope> </dependency> - - <!-- Testing --> + + <!-- Testing --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> @@ -115,7 +113,7 @@ <artifactId>javax.servlet-api</artifactId> <scope>test</scope> </dependency> - <dependency> + <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.testing.resourceresolver-mock</artifactId> <version>0.1.0</version> diff --git a/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java b/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java index da0dd38..4a903d2 100755 --- a/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java +++ b/src/main/java/org/apache/sling/resource/collection/ResourceCollection.java @@ -39,9 +39,9 @@ import org.osgi.annotation.versioning.ProviderType; @ProviderType public interface ResourceCollection { - /** - * Sling resource type for resource representing a {@link ResourceCollection} - */ + /** + * Sling resource type for resource representing a {@link ResourceCollection} + */ public static final String RESOURCE_TYPE = "sling/collection"; /** @@ -67,7 +67,7 @@ public interface ResourceCollection { /** * Returns additional properties for a particular resource in Collection entry. - * + * * @param resource resource for which to get the properties * @return properties of the Collection entry as a {@link ValueMap} which will not be null */ @@ -116,7 +116,6 @@ public interface ResourceCollection { */ boolean add(Resource resource) throws PersistenceException; - /** * Removes a entry of resource from collection & returns true if successful. * Changes are transient & have to be saved by calling resolver.commit() diff --git a/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java b/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java index f235aff..7155be0 100755 --- a/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java +++ b/src/main/java/org/apache/sling/resource/collection/ResourceCollectionManager.java @@ -47,7 +47,6 @@ public interface ResourceCollectionManager { */ ResourceCollection getCollection(Resource resource); - /** * This method creates a resource collection with a given name under the <code>parentResource</code>. * The changes are transient and have to be saved by resourceResolver.commit() @@ -73,7 +72,8 @@ public interface ResourceCollectionManager { * * @throws PersistenceException if the operation fails */ - ResourceCollection createCollection(Resource parentResource, String name, Map<String,Object> properties) throws PersistenceException; + ResourceCollection createCollection(Resource parentResource, String name, Map<String, Object> properties) + throws PersistenceException; /** * Removes the {@link org.apache.sling.resource.collection.ResourceCollection} corresponding to the collection represented by @@ -86,4 +86,4 @@ public interface ResourceCollectionManager { * @throws PersistenceException if the operation fails */ boolean deleteCollection(Resource resource) throws PersistenceException; -} \ No newline at end of file +} diff --git a/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java b/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java index d7e37ce..eb8ce97 100755 --- a/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java +++ b/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionAdapterFactory.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.sling.resource.collection.impl; import org.apache.sling.api.adapter.AdapterFactory; @@ -34,15 +33,16 @@ import org.slf4j.LoggerFactory; * AdapterFactory that adapts Resources to: {@link ResourceCollection} * And ResourceResolver to: {@link ResourceCollectionManager) */ -@Component(service = AdapterFactory.class, - property = { +@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 final Logger log = LoggerFactory.getLogger(ResourceCollectionAdapterFactory.class); @@ -57,44 +57,37 @@ public class ResourceCollectionAdapterFactory implements AdapterFactory { // ---------- AdapterFactory ----------------------------------------------- @Override - public <AdapterType> AdapterType getAdapter(Object adaptable, - Class<AdapterType> type) { + public <AdapterType> AdapterType getAdapter(Object adaptable, Class<AdapterType> type) { if (adaptable instanceof Resource) { return getAdapter((Resource) adaptable, type); } else if (adaptable instanceof ResourceResolver) { return getAdapter((ResourceResolver) adaptable, type); } else { - log.warn("Unable to handle adaptable {}", - adaptable.getClass().getName()); + log.warn("Unable to handle adaptable {}", adaptable.getClass().getName()); return null; } } @SuppressWarnings("unchecked") - private <AdapterType> AdapterType getAdapter(Resource resource, - Class<AdapterType> type) { + private <AdapterType> AdapterType getAdapter(Resource resource, Class<AdapterType> type) { if (resource != null) { if (type == COLLECTION_CLASS) { if (resource.isResourceType(ResourceCollection.RESOURCE_TYPE)) { return (AdapterType) new ResourceCollectionImpl(resource); } } - log.debug("Unable to adapt resource of {} to type {}", - resource.getResourceType(), type.getName()); - + log.debug("Unable to adapt resource of {} to type {}", resource.getResourceType(), type.getName()); } log.debug("Unable to adapt null resource to type {}", type.getName()); return null; } @SuppressWarnings("unchecked") - private <AdapterType> AdapterType getAdapter(ResourceResolver resolver, - Class<AdapterType> type) { + private <AdapterType> AdapterType getAdapter(ResourceResolver resolver, Class<AdapterType> type) { if (COLLECTION_MGR_CLASS == type) { return (AdapterType) collectionManager; } else { - log.warn("Unable to adapt resolver to requested type {}", - type.getName()); + log.warn("Unable to adapt resolver to requested type {}", type.getName()); return null; } } diff --git a/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionConstants.java b/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionConstants.java index bb433f2..fcf0fbc 100644 --- a/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionConstants.java +++ b/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionConstants.java @@ -19,9 +19,9 @@ package org.apache.sling.resource.collection.impl; public interface ResourceCollectionConstants { - /** - * property name to store resource reference in collection entry - */ + /** + * property name to store resource reference in collection entry + */ static final String REF_PROPERTY = "sling:resource"; /** diff --git a/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java b/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java index 3a92dca..df01730 100755 --- a/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java +++ b/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.sling.resource.collection.impl; import java.text.MessageFormat; @@ -44,15 +43,15 @@ import org.slf4j.LoggerFactory; * Implements <code>ResourceCollection</code> * */ -public class ResourceCollectionImpl implements - ResourceCollection { +public class ResourceCollectionImpl implements ResourceCollection { private static final Logger log = LoggerFactory.getLogger(ResourceCollectionImpl.class); /** * Defines the resource type property */ - private static final String RESOURCE_TYPE = SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE; + private static final String RESOURCE_TYPE = + SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE; /** * underlying resource @@ -99,22 +98,19 @@ public class ResourceCollectionImpl implements @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[]{}); + ModifiableValueMap vm = membersResource.adaptTo(ModifiableValueMap.class); + String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[] {}); - order = ArrayUtils.add(order, res.getPath()); - vm.put(ResourceCollectionConstants.REFERENCES_PROP, order); + order = ArrayUtils.add(order, res.getPath()); + vm.put(ResourceCollectionConstants.REFERENCES_PROP, order); - if (properties == null) { - properties = new HashMap<>(); - } + if (properties == null) { + properties = new HashMap<>(); + } properties.put(ResourceCollectionConstants.REF_PROPERTY, res.getPath()); resolver.create( - membersResource, - ResourceUtil.createUniqueChildName(membersResource, - res.getName()), properties); - log.debug("added member to resource {} to collection {}", - new String[] { res.getPath(), resource.getPath() }); + membersResource, ResourceUtil.createUniqueChildName(membersResource, res.getName()), properties); + log.debug("added member to resource {} to collection {}", new String[] {res.getPath(), resource.getPath()}); return true; } @@ -127,46 +123,41 @@ public class ResourceCollectionImpl implements @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[]{}); + ModifiableValueMap vm = membersResource.adaptTo(ModifiableValueMap.class); + String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[] {}); - order = ArrayUtils.add(order, res.getPath()); - vm.put(ResourceCollectionConstants.REFERENCES_PROP, order); + order = ArrayUtils.add(order, res.getPath()); + vm.put(ResourceCollectionConstants.REFERENCES_PROP, order); - Map<String, Object> properties = new HashMap<>(); - properties.put(ResourceCollectionConstants.REF_PROPERTY, res.getPath()); + Map<String, Object> properties = new HashMap<>(); + properties.put(ResourceCollectionConstants.REF_PROPERTY, res.getPath()); resolver.create( - membersResource, - ResourceUtil.createUniqueChildName(membersResource, - res.getName()), properties); - log.debug("added member to resource {} to collection {}", - new String[] { res.getPath(), resource.getPath() }); + membersResource, ResourceUtil.createUniqueChildName(membersResource, res.getName()), properties); + log.debug("added member to resource {} to collection {}", new String[] {res.getPath(), resource.getPath()}); return true; } 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<>(); + ValueMap vm = membersResource.adaptTo(ValueMap.class); + String[] references = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[] {}); + List<Resource> resources = new ArrayList<>(); - for (String path:references) { - Resource resource = resolver.getResource(path); - if (resource != null){ - resources.add(resource); - } + for (String path : references) { + Resource resource = resolver.getResource(path); + if (resource != null) { + resources.add(resource); + } } - return resources.iterator(); + return resources.iterator(); } /** @@ -184,16 +175,16 @@ public class ResourceCollectionImpl implements */ @Override public boolean contains(Resource res) { - if (res != null) { - ValueMap vm = membersResource.adaptTo(ValueMap.class); - String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[]{}); + 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); + int index = ArrayUtils.indexOf(order, res.getPath(), 0); - return index >= 0 ? true: false; - } + return index >= 0 ? true : false; + } - return false; + return false; } /** @@ -201,22 +192,22 @@ public class ResourceCollectionImpl implements */ @Override public boolean remove(Resource res) throws PersistenceException { - //remove the resource + // remove the resource Resource tobeRemovedRes = findRes(res); if (tobeRemovedRes == null) { - return false; + return false; } resolver.delete(tobeRemovedRes); - //remove from order array + // remove from order array ModifiableValueMap vm = membersResource.adaptTo(ModifiableValueMap.class); - String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[]{}); + String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[] {}); - int index = ArrayUtils.indexOf(order, res.getPath(), 0); + int index = ArrayUtils.indexOf(order, res.getPath(), 0); - order = ArrayUtils.remove(order, index); - vm.put(ResourceCollectionConstants.REFERENCES_PROP, order); + order = ArrayUtils.remove(order, index); + vm.put(ResourceCollectionConstants.REFERENCES_PROP, order); - return true; + return true; } /** @@ -234,72 +225,78 @@ public class ResourceCollectionImpl implements if (res != null) { String resName = res.getName(); if (membersResource.getChild(resName) != null - && (res.getPath()).equals(ResourceUtil.getValueMap( - membersResource.getChild(resName)).get(ResourceCollectionConstants.REF_PROPERTY, ""))) + && (res.getPath()) + .equals(ResourceUtil.getValueMap(membersResource.getChild(resName)) + .get(ResourceCollectionConstants.REF_PROPERTY, ""))) return membersResource.getChild(resName); // handle multiple res with same name but different paths Iterator<Resource> children = membersResource.listChildren(); while (children.hasNext()) { Resource r = children.next(); - if (ResourceUtil.getValueMap(r).get(ResourceCollectionConstants.REF_PROPERTY, "").equals( - res.getPath())) return r; + if (ResourceUtil.getValueMap(r) + .get(ResourceCollectionConstants.REF_PROPERTY, "") + .equals(res.getPath())) return r; } } return null; } - @Override + @Override public void orderBefore(Resource srcResource, Resource destResource) { - if (srcResource == null) { - throw new IllegalArgumentException("Source Resource can not be null"); - } - ModifiableValueMap vm = membersResource.adaptTo(ModifiableValueMap.class); - String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[]{}); - 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", - srcPath, getPath()); - return ; - } - if (destResource == null) { - //add it to the end. - 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", - 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", - destPath, getPath()); - return; - } - - order = ArrayUtils.remove(order, srcIndex); - if (srcIndex < destIndex) { //recalculate dest index - destIndex = ArrayUtils.indexOf(order, destPath); - } - order = ArrayUtils.add(order, destIndex, srcPath); - } - - vm.put(ResourceCollectionConstants.REFERENCES_PROP, order); - } + if (srcResource == null) { + throw new IllegalArgumentException("Source Resource can not be null"); + } + ModifiableValueMap vm = membersResource.adaptTo(ModifiableValueMap.class); + String[] order = vm.get(ResourceCollectionConstants.REFERENCES_PROP, new String[] {}); + 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", + srcPath, + getPath()); + return; + } + if (destResource == null) { + // add it to the end. + 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", + 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", + destPath, + getPath()); + return; + } + + order = ArrayUtils.remove(order, srcIndex); + if (srcIndex < destIndex) { // recalculate dest index + destIndex = ArrayUtils.indexOf(order, destPath); + } + order = ArrayUtils.add(order, destIndex, srcPath); + } + + vm.put(ResourceCollectionConstants.REFERENCES_PROP, order); + } private <T> Optional<T> getPropertiesAs(Resource resource, Class<T> type) { Iterator<Resource> entries = membersResource.listChildren(); while (entries.hasNext()) { Resource entry = entries.next(); - String path = ResourceUtil.getValueMap(entry).get( - ResourceCollectionConstants.REF_PROPERTY, ""); + String path = ResourceUtil.getValueMap(entry).get(ResourceCollectionConstants.REF_PROPERTY, ""); if (resource.getPath().equals(path)) { return Optional.ofNullable(entry.adaptTo(type)); diff --git a/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java b/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java index d86217c..e8147ed 100755 --- a/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java +++ b/src/main/java/org/apache/sling/resource/collection/impl/ResourceCollectionManagerImpl.java @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.sling.resource.collection.impl; import java.util.HashMap; @@ -41,10 +40,9 @@ 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=ResourceCollectionManager.class, - property = { - Constants.SERVICE_VENDOR + "=The Apache Software Foundation" - }) +@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()); @@ -54,23 +52,22 @@ public class ResourceCollectionManagerImpl implements ResourceCollectionManager */ @Override public ResourceCollection getCollection(Resource resource) { - if (resource != null) { - if (resource.isResourceType(ResourceCollection.RESOURCE_TYPE)) { + if (resource != null) { + if (resource.isResourceType(ResourceCollection.RESOURCE_TYPE)) { return new ResourceCollectionImpl(resource); } - } else { - throw new IllegalArgumentException("resource can not be null"); - } + } else { + throw new IllegalArgumentException("resource can not be null"); + } - return null; + return null; } /** * {@inheritDoc} */ @Override - public ResourceCollection createCollection(Resource parentResource, String name) - throws PersistenceException { + public ResourceCollection createCollection(Resource parentResource, String name) throws PersistenceException { return createCollection(parentResource, name, null); } @@ -78,15 +75,14 @@ public class ResourceCollectionManagerImpl implements ResourceCollectionManager * {@inheritDoc} */ @Override - public ResourceCollection createCollection(Resource parentResource, String name, - Map<String, Object> properties) throws PersistenceException { + public ResourceCollection createCollection(Resource parentResource, String name, Map<String, Object> properties) + throws PersistenceException { if (parentResource != null) { - String fullPath = parentResource.getPath() + "/" + name; + String fullPath = parentResource.getPath() + "/" + name; if (parentResource.getResourceResolver().getResource(fullPath) != null) { - throw new IllegalArgumentException("invalid path, " + fullPath - + "resource already exists"); + throw new IllegalArgumentException("invalid path, " + fullPath + "resource already exists"); } if (properties == null) { @@ -94,17 +90,20 @@ public class ResourceCollectionManagerImpl implements ResourceCollectionManager } if (properties.get(SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE) != null - && !ResourceCollection.RESOURCE_TYPE.equals(properties.get(SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE))) { + && !ResourceCollection.RESOURCE_TYPE.equals(properties.get( + SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE))) { properties.put( - SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_SUPER_TYPE, - ResourceCollection.RESOURCE_TYPE); + SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_SUPER_TYPE, + ResourceCollection.RESOURCE_TYPE); } else { properties.put( - SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE, - ResourceCollection.RESOURCE_TYPE); + SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE, + ResourceCollection.RESOURCE_TYPE); } Resource collectionRes = parentResource.getResourceResolver().create(parentResource, name, properties); - parentResource.getResourceResolver().create(collectionRes, ResourceCollectionConstants.MEMBERS_NODE_NAME, null); + parentResource + .getResourceResolver() + .create(collectionRes, ResourceCollectionConstants.MEMBERS_NODE_NAME, null); log.debug("collection {} created", fullPath); return new ResourceCollectionImpl(collectionRes); @@ -112,7 +111,6 @@ public class ResourceCollectionManagerImpl implements ResourceCollectionManager log.error("parent resource can not be null"); throw new IllegalArgumentException("parent resource can not be null "); } - } /** @@ -121,14 +119,13 @@ public class ResourceCollectionManagerImpl implements ResourceCollectionManager * @throws PersistenceException */ @Override - public boolean deleteCollection(Resource resource) - throws PersistenceException { - if (resource != null) { - log.debug("collection {} deleted", resource.getPath()); - resource.getResourceResolver().delete(resource); - return true; - } else { - throw new IllegalArgumentException("resource can not be null"); - } + public boolean deleteCollection(Resource resource) throws PersistenceException { + if (resource != null) { + log.debug("collection {} deleted", resource.getPath()); + resource.getResourceResolver().delete(resource); + return true; + } else { + throw new IllegalArgumentException("resource can not be null"); + } } -} \ No newline at end of file +} diff --git a/src/main/java/org/apache/sling/resource/collection/impl/util/ResourceCollectionUtil.java b/src/main/java/org/apache/sling/resource/collection/impl/util/ResourceCollectionUtil.java index 2f56494..e0bd988 100755 --- a/src/main/java/org/apache/sling/resource/collection/impl/util/ResourceCollectionUtil.java +++ b/src/main/java/org/apache/sling/resource/collection/impl/util/ResourceCollectionUtil.java @@ -16,15 +16,13 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.sling.resource.collection.impl.util; - import org.apache.sling.api.resource.Resource; public class ResourceCollectionUtil { - - /** + + /** * Create a unique name for a child of the <code>resource</code>. Generates a unique name and test if child * already exists. If name is already existing, iterate until a unique one is found * @@ -33,17 +31,16 @@ public class ResourceCollectionUtil { * @return a unique label string */ public static String createUniqueChildName(Resource resource, String name) { - if (resource.getChild(name)!=null) { + if (resource.getChild(name) != null) { // leaf node already exists, create new unique name String leafNodeName; int i = 0; do { leafNodeName = name + String.valueOf(i); i++; - } while (resource.getChild(leafNodeName)!=null); + } while (resource.getChild(leafNodeName) != null); return leafNodeName; } return name; } - } diff --git a/src/main/java/org/apache/sling/resource/collection/package-info.java b/src/main/java/org/apache/sling/resource/collection/package-info.java index 232b52f..917ed18 100644 --- a/src/main/java/org/apache/sling/resource/collection/package-info.java +++ b/src/main/java/org/apache/sling/resource/collection/package-info.java @@ -19,5 +19,3 @@ @org.osgi.annotation.versioning.Version("1.1.0") package org.apache.sling.resource.collection; - - diff --git a/src/test/java/org/apache/sling/resource/collection/impl/ResourceCollectionImplTest.java b/src/test/java/org/apache/sling/resource/collection/impl/ResourceCollectionImplTest.java index 716ac37..899bd88 100755 --- a/src/test/java/org/apache/sling/resource/collection/impl/ResourceCollectionImplTest.java +++ b/src/test/java/org/apache/sling/resource/collection/impl/ResourceCollectionImplTest.java @@ -36,84 +36,99 @@ import org.junit.Before; import org.junit.Test; public class ResourceCollectionImplTest { - private ResourceResolver resResolver; - private static final String PROPERTY_RESOURCE_TYPE = SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE; + private ResourceResolver resResolver; + private static final String PROPERTY_RESOURCE_TYPE = + SlingConstants.NAMESPACE_PREFIX + ":" + SlingConstants.PROPERTY_RESOURCE_TYPE; private ResourceCollectionManager rcm; - @Before - public void setUp() throws Exception { - resResolver = new MockResourceResolverFactory().getAdministrativeResourceResolver(null); - rcm = new ResourceCollectionManagerImpl(); - } + @Before + public void setUp() throws Exception { + resResolver = new MockResourceResolverFactory().getAdministrativeResourceResolver(null); + rcm = new ResourceCollectionManagerImpl(); + } - @Test - public void testAddResource() throws Exception { + @Test + public void testAddResource() throws Exception { final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "test1"); - final Resource res1 = resResolver.create(resResolver.getResource("/"), "res1", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource res1 = resResolver.create( + resResolver.getResource("/"), "res1", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(res1); - final Resource resource = resResolver.create(resResolver.getResource("/"), "res2", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), "res2", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(resource); Assert.assertEquals(true, collection.contains(resource)); Assert.assertEquals(true, collection.contains(resource)); Assert.assertNotNull(resResolver.getResource("/test1")); - Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, resResolver.getResource("/test1").getResourceType()); - } + Assert.assertEquals( + ResourceCollection.RESOURCE_TYPE, + resResolver.getResource("/test1").getResourceType()); + } - @Test - public void testCreateCollection() throws Exception { + @Test + public void testCreateCollection() throws Exception { final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "test1"); - final Resource res1 = resResolver.create(resResolver.getResource("/"), "res1", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource res1 = resResolver.create( + resResolver.getResource("/"), "res1", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(res1, null); - final Resource resource = resResolver.create(resResolver.getResource("/"), "res2", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), "res2", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(resource, null); Assert.assertEquals(true, collection.contains(resource)); Assert.assertNotNull(resResolver.getResource("/test1")); - Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, resResolver.getResource("/test1").getResourceType()); - } + Assert.assertEquals( + ResourceCollection.RESOURCE_TYPE, + resResolver.getResource("/test1").getResourceType()); + } - @Test - public void testCheckPath() throws Exception { - final Resource rootResource = resResolver.create(resResolver.getResource("/"), "root", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + @Test + public void testCheckPath() throws Exception { + final Resource rootResource = resResolver.create( + resResolver.getResource("/"), "root", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); final ResourceCollection collection = rcm.createCollection(rootResource, "test1"); - Assert.assertEquals(rootResource.getPath() + "/" + "test1", collection.getPath()); - } + } - @Test - public void testGetCollection() throws Exception { + @Test + public void testGetCollection() throws Exception { ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "test1"); - final Resource res1 = resResolver.create(resResolver.getResource("/"), "res1", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource res1 = resResolver.create( + resResolver.getResource("/"), "res1", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(res1, null); - final Resource resource = resResolver.create(resResolver.getResource("/"), "res2", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), "res2", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(resource, null); collection = rcm.getCollection(resResolver.getResource(collection.getPath())); Assert.assertEquals(true, collection.contains(resource)); Assert.assertNotNull(resResolver.getResource("/test1")); - Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, resResolver.getResource("/test1").getResourceType()); - } + Assert.assertEquals( + ResourceCollection.RESOURCE_TYPE, + resResolver.getResource("/test1").getResourceType()); + } - @Test - public void testListCollection() throws Exception { + @Test + public void testListCollection() throws Exception { final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "collection1"); - final Resource res1 = resResolver.create(resResolver.getResource("/"), "res1", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource res1 = resResolver.create( + resResolver.getResource("/"), "res1", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(res1, null); - final Resource resource = resResolver.create(resResolver.getResource("/"), "res2", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), "res2", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(resource, null); Assert.assertEquals(true, collection.contains(resource)); @@ -121,22 +136,23 @@ public class ResourceCollectionImplTest { final Iterator<Resource> resources = collection.getResources(); int numOfRes = 0; while (resources.hasNext()) { - resources.next(); - numOfRes ++; + resources.next(); + numOfRes++; } Assert.assertEquals(2, numOfRes); - } + } - @Test - public void testCreateCollectionWithProperties() throws Exception { - final Map<String, Object> props = new HashMap<String, Object>(); - props.put(PROPERTY_RESOURCE_TYPE, "some/type"); - props.put("creator", "slingdev"); + @Test + public void testCreateCollectionWithProperties() throws Exception { + final Map<String, Object> props = new HashMap<String, Object>(); + props.put(PROPERTY_RESOURCE_TYPE, "some/type"); + props.put("creator", "slingdev"); final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "collection3", props); - final Resource resource = resResolver.create(resResolver.getResource("/"), "res1", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), "res1", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(resource, null); final Resource collectionRes = resResolver.getResource("/collection3"); @@ -148,17 +164,18 @@ public class ResourceCollectionImplTest { ValueMap vm = collectionRes.adaptTo(ValueMap.class); Assert.assertEquals("slingdev", vm.get("creator", "")); - } + } - @Test - public void testAddResourceWithProperties() throws Exception { - final Map<String, Object> props = new HashMap<String, Object>(); - props.put("creator", "slingdev"); + @Test + public void testAddResourceWithProperties() throws Exception { + final Map<String, Object> props = new HashMap<String, Object>(); + props.put("creator", "slingdev"); final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "collection3"); - final Resource resource = resResolver.create(resResolver.getResource("/"), "res1", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), "res1", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(resource, props); final Resource collectionRes = resResolver.getResource("/collection3"); @@ -169,58 +186,64 @@ public class ResourceCollectionImplTest { ValueMap vm = collection.getProperties(resource); if (vm != null) { - Assert.assertEquals("slingdev", vm.get("creator", "")); + Assert.assertEquals("slingdev", vm.get("creator", "")); } else { - Assert.fail("no resource entry in collection"); + Assert.fail("no resource entry in collection"); } - } + } - @Test - public void testOrdering() throws Exception { + @Test + public void testOrdering() throws Exception { final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "test1"); String[] resPaths = {"/res1", "/res2"}; - final Resource resource = resResolver.create(resResolver.getResource("/"), resPaths[0].substring(1), - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), + resPaths[0].substring(1), + Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) "type")); collection.add(resource, null); - final Resource resource2 = resResolver.create(resResolver.getResource("/"), resPaths[1].substring(1), - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object)"type")); + final Resource resource2 = resResolver.create( + resResolver.getResource("/"), + resPaths[1].substring(1), + Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) "type")); collection.add(resource2, null); Assert.assertEquals(true, collection.contains(resource2)); Assert.assertNotNull(resResolver.getResource("/test1")); - Assert.assertEquals(ResourceCollection.RESOURCE_TYPE, resResolver.getResource("/test1").getResourceType()); + Assert.assertEquals( + ResourceCollection.RESOURCE_TYPE, + resResolver.getResource("/test1").getResourceType()); Iterator<Resource> resources = collection.getResources(); int numOfRes = 0; while (resources.hasNext()) { - Resource entry = resources.next(); - Assert.assertEquals(resPaths[numOfRes], entry.getPath()); - numOfRes ++; + Resource entry = resources.next(); + Assert.assertEquals(resPaths[numOfRes], entry.getPath()); + numOfRes++; } try { - collection.orderBefore(resource, resource); - Assert.fail("should have thrown IllegalArgument"); + collection.orderBefore(resource, resource); + Assert.fail("should have thrown IllegalArgument"); } catch (IllegalArgumentException e) { } - //change the order + // change the order collection.orderBefore(resource2, resource); resources = collection.getResources(); numOfRes = 2; while (resources.hasNext()) { - numOfRes --; - Resource entry = resources.next(); - Assert.assertEquals(resPaths[numOfRes], entry.getPath()); + numOfRes--; + Resource entry = resources.next(); + Assert.assertEquals(resPaths[numOfRes], entry.getPath()); } Assert.assertEquals(0, numOfRes); - } + } @Test public void testGetValueMap() throws PersistenceException { @@ -229,8 +252,9 @@ public class ResourceCollectionImplTest { final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "collection3"); - final Resource resource = resResolver.create(resResolver.getResource("/"), "res1", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) "type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), "res1", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); collection.add(resource, props); final Resource collectionRes = resResolver.getResource("/collection3"); @@ -249,8 +273,9 @@ public class ResourceCollectionImplTest { final ResourceCollection collection = rcm.createCollection(resResolver.getResource("/"), "collection3"); - final Resource resource = resResolver.create(resResolver.getResource("/"), "res1", - Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) "type")); + final Resource resource = resResolver.create( + resResolver.getResource("/"), "res1", Collections.singletonMap(PROPERTY_RESOURCE_TYPE, (Object) + "type")); final Resource collectionRes = resResolver.getResource("/collection3"); Assert.assertNotNull(collectionRes); @@ -261,5 +286,4 @@ public class ResourceCollectionImplTest { Assert.assertNotNull(vm); } - -} \ No newline at end of file +}
