Package org.apache.sling.launchpad.testservices.serversidetests

Source Code of org.apache.sling.launchpad.testservices.serversidetests.WriteableResourcesTest$Props

/*
* 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.launchpad.testservices.serversidetests;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

import java.util.HashMap;

import org.apache.sling.api.resource.ModifiableValueMap;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.junit.annotations.SlingAnnotationsTestRunner;
import org.apache.sling.junit.annotations.TestReference;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

/** Test (and demonstrate) the Sling Resource CRUD functionality */
@RunWith(SlingAnnotationsTestRunner.class)
public class WriteableResourcesTest {
    @TestReference
    private ResourceResolverFactory resourceResolverFactory;
   
    private ResourceResolver resolver;
    private Resource testRoot;
   
    @SuppressWarnings("serial")
    private static class Props extends HashMap<String, Object> {
        Props(String ... keyValue) {
            for(int i=0 ; i< keyValue.length; i+=2) {
                put(keyValue[i], keyValue[i+1]);
            }
        }
    }
   
    @Before
    public void setup() throws Exception {
        resolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
        assertNotNull("Expecting non-null ResourceResolver", resolver);
        final Resource root = resolver.getResource("/");
        assertNotNull("Expecting non-null root Resource", root);
        final String path = getClass().getSimpleName() + "_" + System.currentTimeMillis();
        testRoot = resolver.create(root, path, null);
    }

    @After
    public void cleanup() throws Exception {
        resolver.delete(testRoot);
        resolver.close();
    }
   
    private void assertValueMap(ValueMap m, String ... keyValue) {
        assertNotNull("Expecting non-null ValueMap", m);
        for(int i=0 ; i< keyValue.length; i+=2) {
            final String key = keyValue[i];
            final String value = keyValue[i+1];
            assertEquals("Expecting " + key + "=" + value, value, m.get(key, String.class));
        }
    }

    @Test
    public void testSimpleCRUD() throws Exception {
       
        // Create a child resource of testRoot, with title and text properties
        final Props props = new Props("title", "hello", "text", "world");
        final String fullPath = resolver.create(testRoot, "child_" + System.currentTimeMillis(), props).getPath();
        resolver.commit();
       
        {
            // Retrieve and check child resource
            final Resource r = resolver.getResource(fullPath);
            assertNotNull("Expecting Resource at " + fullPath, r);
            final ModifiableValueMap m = r.adaptTo(ModifiableValueMap.class);
            assertValueMap(m, "title", "hello", "text", "world");
           
            // Update child resource
            m.put("more", "fun");
            m.put("title", "changed");
            resolver.commit();
        }
       
        {
            // Retrieve and check updated resource
            final Resource r = resolver.getResource(fullPath);
            assertNotNull("Expecting modified Resource at " + fullPath, r);
            assertValueMap(r.adaptTo(ValueMap.class), "title", "changed", "more", "fun", "text", "world");
        }
       
        {
            // Delete test resource and check that it's gone
            final Resource r = resolver.getResource(fullPath);
            assertNotNull("Expecting non-null resource to delete, at " + fullPath, r);
            resolver.delete(r);
            resolver.commit();
            assertNull("Expecting " + fullPath + " to be deleted", resolver.getResource(fullPath));
        }
    }
}
TOP

Related Classes of org.apache.sling.launchpad.testservices.serversidetests.WriteableResourcesTest$Props

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.