You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2015/05/18 22:41:58 UTC

svn commit: r1680091 - in /sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src: main/java/org/apache/sling/nosql/generic/adapter/ main/java/org/apache/sling/nosql/generic/resource/impl/ test/java/org/apache/sling/nosql/generic/resource/impl/ t...

Author: sseifert
Date: Mon May 18 20:41:43 2015
New Revision: 1680091

URL: http://svn.apache.org/r1680091
Log:
optimizations and javadocs

Modified:
    sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java
    sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/NoSqlValueMap.java
    sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/NoSqlResourceProviderTest.java
    sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlAdapter.java
    sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlResourceProviderFactory.java

Modified: sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java?rev=1680091&r1=1680090&r2=1680091&view=diff
==============================================================================
--- sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java (original)
+++ sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java Mon May 18 20:41:43 2015
@@ -48,6 +48,8 @@ public interface NoSqlAdapter {
     
     /**
      * Store data with the given path in NoSQL database.
+     * It is guaranteed that the map of the NoSqlData object does only contain primitive
+     * value types String, Integer, Long, Double, Boolean or arrays of them.
      * @param data Data with path
      * @return true if a new entry was created, false if an existing was overridden.
      */

Modified: sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/NoSqlValueMap.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/NoSqlValueMap.java?rev=1680091&r1=1680090&r2=1680091&view=diff
==============================================================================
--- sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/NoSqlValueMap.java (original)
+++ sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/NoSqlValueMap.java Mon May 18 20:41:43 2015
@@ -47,10 +47,6 @@ class NoSqlValueMap extends ValueMapDeco
     
     private final Resource resource;
     
-    public NoSqlValueMap(Resource resource) {
-        this(resource, new HashMap<String, Object>());
-    }
-
     public NoSqlValueMap(Resource resource, Map<String,Object> map) {
         super(convertForWriteAll(map));
         this.resource = resource;

Modified: sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/NoSqlResourceProviderTest.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/NoSqlResourceProviderTest.java?rev=1680091&r1=1680090&r2=1680091&view=diff
==============================================================================
--- sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/NoSqlResourceProviderTest.java (original)
+++ sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/resource/impl/NoSqlResourceProviderTest.java Mon May 18 20:41:43 2015
@@ -37,14 +37,11 @@ import org.apache.jackrabbit.JcrConstant
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceProvider;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.nosql.generic.simple.SimpleNoSqlResourceProviderFactory;
-import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
-import org.apache.sling.testing.mock.sling.MockSling;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
+import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -53,6 +50,9 @@ import org.junit.Test;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
+/**
+ * Test basic ResourceResolver and ValueMap with different data types.
+ */
 public class NoSqlResourceProviderTest {
     
     private static final String STRING_VALUE = "value1";
@@ -65,9 +65,8 @@ public class NoSqlResourceProviderTest {
     private static final byte[] BINARY_VALUE = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
 
     @Rule
-    public OsgiContext context = new OsgiContext();
+    public SlingContext context = new SlingContext(ResourceResolverType.JCR_MOCK);
     
-    private ResourceResolver resourceResolver;
     private Resource testRoot;
 
     @Before
@@ -76,9 +75,6 @@ public class NoSqlResourceProviderTest {
                 .put(ResourceProvider.ROOTS, "/nosql-simple")
                 .build());
         
-        ResourceResolverFactory resourceResolverFactory = MockSling.newResourceResolverFactory(ResourceResolverType.JCR_MOCK, context.bundleContext());
-        this.resourceResolver = resourceResolverFactory.getResourceResolver(null);
-
         // prepare some test data using Sling CRUD API
         Resource rootNode = getTestRootResource();
 
@@ -92,14 +88,14 @@ public class NoSqlResourceProviderTest {
         props.put("dateProp", DATE_VALUE);
         props.put("calendarProp", CALENDAR_VALUE);
         props.put("binaryProp", new ByteArrayInputStream(BINARY_VALUE));
-        Resource node1 = this.resourceResolver.create(rootNode, "node1", props);
+        Resource node1 = context.resourceResolver().create(rootNode, "node1", props);
 
-        this.resourceResolver.create(node1, "node11", ImmutableMap.<String, Object>builder()
+        context.resourceResolver().create(node1, "node11", ImmutableMap.<String, Object>builder()
                 .put("stringProp11", STRING_VALUE)
                 .build());
-        this.resourceResolver.create(node1, "node12", ValueMap.EMPTY);
+        context.resourceResolver().create(node1, "node12", ValueMap.EMPTY);
 
-        this.resourceResolver.commit();
+        context.resourceResolver().commit();
     }
 
 
@@ -116,16 +112,18 @@ public class NoSqlResourceProviderTest {
         if (this.testRoot == null) {
             Map<String, Object> props = new HashMap<String, Object>();
             props.put(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED);
-            final Resource root = this.resourceResolver.getResource("/");
-            Resource noSqlRoot = this.resourceResolver.create(root, "nosql-simple", props);
-            this.testRoot = this.resourceResolver.create(noSqlRoot, "test", props);
+            final Resource root = context.resourceResolver().getResource("/");
+            Resource noSqlRoot = context.resourceResolver().create(root, "nosql-simple", props);
+            this.testRoot = context.resourceResolver().create(noSqlRoot, "test", props);
         }
         return this.testRoot;
     }
 
     @Test
     public void testSimpleProperties() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
+        assertTrue(resource1 instanceof NoSqlResource);
+        
         assertNotNull(resource1);
         assertEquals("node1", resource1.getName());
 
@@ -139,7 +137,7 @@ public class NoSqlResourceProviderTest {
 
     @Test
     public void testSimpleProperties_DeepPathAccess() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(testRoot.getPath());
+        Resource resource1 = context.resourceResolver().getResource(testRoot.getPath());
         assertNotNull(resource1);
         assertEquals(testRoot.getName(), resource1.getName());
 
@@ -154,14 +152,14 @@ public class NoSqlResourceProviderTest {
     
     @Test
     public void testDateProperty() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         ValueMap props = ResourceUtil.getValueMap(resource1);
         assertEquals(DATE_VALUE, props.get("dateProp", Date.class));
     }
 
     @Test
     public void testDatePropertyToCalendar() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         ValueMap props = ResourceUtil.getValueMap(resource1);
         Calendar calendarValue = props.get("dateProp", Calendar.class);
         assertNotNull(calendarValue);
@@ -170,14 +168,14 @@ public class NoSqlResourceProviderTest {
 
     @Test
     public void testCalendarProperty() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         ValueMap props = ResourceUtil.getValueMap(resource1);
         assertEquals(CALENDAR_VALUE.getTime(), props.get("calendarProp", Calendar.class).getTime());
     }
 
     @Test
     public void testCalendarPropertyToDate() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
         ValueMap props = ResourceUtil.getValueMap(resource1);
         Date dateValue = props.get("calendarProp", Date.class);
         assertNotNull(dateValue);
@@ -186,7 +184,7 @@ public class NoSqlResourceProviderTest {
 
     @Test
     public void testListChildren() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
 
         List<Resource> children = ImmutableList.copyOf(resource1.listChildren());
         assertEquals(2, children.size());
@@ -196,7 +194,7 @@ public class NoSqlResourceProviderTest {
 
     @Test
     public void testBinaryData() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
 
         InputStream is = ResourceUtil.getValueMap(resource1).get("binaryProp", InputStream.class);
         byte[] dataFromResource = IOUtils.toByteArray(is);
@@ -206,7 +204,7 @@ public class NoSqlResourceProviderTest {
 
     @Test
     public void testValueMapTypes() throws IOException {
-        Resource resource1 = this.resourceResolver.getResource(getTestRootResource().getPath() + "/node1");
+        Resource resource1 = context.resourceResolver().getResource(getTestRootResource().getPath() + "/node1");
 
         // ensure that value map has only supported primitive types (all other supported types converted to string)
         ValueMap valueMap = resource1.getValueMap();
@@ -217,7 +215,7 @@ public class NoSqlResourceProviderTest {
 
     @Test
     public void testPrimaryTypeResourceType() throws PersistenceException {
-        Resource resource = this.resourceResolver.getResource(getTestRootResource().getPath());
+        Resource resource = context.resourceResolver().getResource(getTestRootResource().getPath());
         assertEquals(JcrConstants.NT_UNSTRUCTURED, resource.getResourceType());
     }
 

Modified: sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlAdapter.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlAdapter.java?rev=1680091&r1=1680090&r2=1680091&view=diff
==============================================================================
--- sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlAdapter.java (original)
+++ sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlAdapter.java Mon May 18 20:41:43 2015
@@ -34,6 +34,9 @@ import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterators;
 
+/**
+ * Stores resource data in a hash map for testing.
+ */
 public class SimpleNoSqlAdapter implements NoSqlAdapter {
     
     private final Map<String, Map<String,Object>> store = new HashMap<String, Map<String,Object>>();
@@ -71,7 +74,7 @@ public class SimpleNoSqlAdapter implemen
 
     public boolean store(NoSqlData data) {
         boolean exists = store.containsKey(data.getPath());
-        store.put(data.getPath(), data.getProperties());
+        store.put(data.getPath(), new HashMap<String, Object>(data.getProperties()));
         return !exists;
     }
 

Modified: sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlResourceProviderFactory.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlResourceProviderFactory.java?rev=1680091&r1=1680090&r2=1680091&view=diff
==============================================================================
--- sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlResourceProviderFactory.java (original)
+++ sling/whiteboard/sseifert/SLING-4381_nosql/nosql-generic/src/test/java/org/apache/sling/nosql/generic/simple/SimpleNoSqlResourceProviderFactory.java Mon May 18 20:41:43 2015
@@ -32,6 +32,10 @@ import org.apache.sling.nosql.generic.ad
 import org.apache.sling.nosql.generic.resource.AbstractNoSqlResourceProviderFactory;
 import org.osgi.service.event.EventAdmin;
 
+/**
+ * Simple NoSQL resource provider factory based on {@link SimpleNoSqlAdapter} which just stores
+ * the resource data in a hash map.
+ */
 @Component(configurationFactory = true, policy = ConfigurationPolicy.REQUIRE, metatype = true)
 @Service(value = ResourceProviderFactory.class)
 @Property(name = ResourceProvider.ROOTS, value = "")