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 2014/10/13 13:54:43 UTC

svn commit: r1631356 [1/9] - in /sling/trunk: ./ testing/jcr-mock/ testing/jcr-mock/src/ testing/jcr-mock/src/main/ testing/jcr-mock/src/main/java/ testing/jcr-mock/src/main/java/org/ testing/jcr-mock/src/main/java/org/apache/ testing/jcr-mock/src/main...

Author: sseifert
Date: Mon Oct 13 11:54:39 2014
New Revision: 1631356

URL: http://svn.apache.org/r1631356
Log:
SLING-4042 Donate sling-mock, jcr-mock, osgi-mock implementation

Added:
    sling/trunk/testing/jcr-mock/
    sling/trunk/testing/jcr-mock/pom.xml   (with props)
    sling/trunk/testing/jcr-mock/src/
    sling/trunk/testing/jcr-mock/src/main/
    sling/trunk/testing/jcr-mock/src/main/java/
    sling/trunk/testing/jcr-mock/src/main/java/org/
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeType.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypeManager.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypes.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockObservationManager.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockRepository.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockSession.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockWorkspace.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ResourceUtil.java   (with props)
    sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/package-info.java   (with props)
    sling/trunk/testing/jcr-mock/src/site/
    sling/trunk/testing/jcr-mock/src/site/markdown/
    sling/trunk/testing/jcr-mock/src/site/markdown/index.md
    sling/trunk/testing/jcr-mock/src/site/markdown/usage.md
    sling/trunk/testing/jcr-mock/src/test/
    sling/trunk/testing/jcr-mock/src/test/java/
    sling/trunk/testing/jcr-mock/src/test/java/org/
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/AbstractItemTest.java   (with props)
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockNodeTest.java   (with props)
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockPropertyTest.java   (with props)
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockRepositoryTest.java   (with props)
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockSessionTest.java   (with props)
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/MockWorkspaceTest.java   (with props)
    sling/trunk/testing/jcr-mock/src/test/java/org/apache/sling/testing/mock/jcr/ResourceUtilTest.java   (with props)
    sling/trunk/testing/osgi-mock/
    sling/trunk/testing/osgi-mock/pom.xml   (with props)
    sling/trunk/testing/osgi-mock/src/
    sling/trunk/testing/osgi-mock/src/main/
    sling/trunk/testing/osgi-mock/src/main/java/
    sling/trunk/testing/osgi-mock/src/main/java/org/
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundle.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockBundleContext.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockComponentContext.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockFilter.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockLogService.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockOsgi.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceReference.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/MockServiceRegistration.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtil.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtil.java   (with props)
    sling/trunk/testing/osgi-mock/src/main/resources/
    sling/trunk/testing/osgi-mock/src/main/resources/simplelogger.properties   (with props)
    sling/trunk/testing/osgi-mock/src/site/
    sling/trunk/testing/osgi-mock/src/site/markdown/
    sling/trunk/testing/osgi-mock/src/site/markdown/index.md
    sling/trunk/testing/osgi-mock/src/site/markdown/usage.md
    sling/trunk/testing/osgi-mock/src/test/
    sling/trunk/testing/osgi-mock/src/test/java/
    sling/trunk/testing/osgi-mock/src/test/java/org/
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleContextTest.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockBundleTest.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockComponentContextTest.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockFilterTest.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockLogServiceTest.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferenceTest.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/OsgiMetadataUtilTest.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/ReflectionServiceUtilTest.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/java/org/apache/sling/testing/mock/osgi/package-info.java   (with props)
    sling/trunk/testing/osgi-mock/src/test/resources/
    sling/trunk/testing/osgi-mock/src/test/resources/META-INF/
    sling/trunk/testing/osgi-mock/src/test/resources/META-INF/test.txt   (with props)
    sling/trunk/testing/osgi-mock/src/test/resources/OSGI-INF/
    sling/trunk/testing/osgi-mock/src/test/resources/OSGI-INF/org.apache.sling.testing.mock.osgi.OsgiMetadataUtilTest.xml   (with props)
    sling/trunk/testing/osgi-mock/src/test/resources/OSGI-INF/org.apache.sling.testing.mock.osgi.ReflectionServiceUtilTest.xml   (with props)
    sling/trunk/testing/osgi-mock/src/test/resources/simplelogger.properties   (with props)
    sling/trunk/testing/sling-mock/
    sling/trunk/testing/sling-mock-jackrabbit/
    sling/trunk/testing/sling-mock-jackrabbit/pom.xml   (with props)
    sling/trunk/testing/sling-mock-jackrabbit/src/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/org/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/org/apache/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/org/apache/sling/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/org/apache/sling/testing/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/org/apache/sling/testing/mock/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/org/apache/sling/testing/mock/sling/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/org/apache/sling/testing/mock/sling/jackrabbit/
    sling/trunk/testing/sling-mock-jackrabbit/src/main/java/org/apache/sling/testing/mock/sling/jackrabbit/JackrabbitMockResourceResolverAdapter.java   (with props)
    sling/trunk/testing/sling-mock-jackrabbit/src/test/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/contentimport/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/contentimport/ContentLoaderBinaryTest.java   (with props)
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/contentimport/ContentLoaderJsonDamTest.java   (with props)
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/contentimport/ContentLoaderJsonTest.java   (with props)
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/JcrResourceResolverTest.java   (with props)
    sling/trunk/testing/sling-mock-jackrabbit/src/test/java/org/apache/sling/testing/mock/sling/jackrabbit/resource/SlingCrudResourceResolverTest.java   (with props)
    sling/trunk/testing/sling-mock/pom.xml   (with props)
    sling/trunk/testing/sling-mock/src/
    sling/trunk/testing/sling-mock/src/main/
    sling/trunk/testing/sling-mock/src/main/java/
    sling/trunk/testing/sling-mock/src/main/java/org/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/JcrMockResourceResolverAdapter.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockAdapterManager.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockJcrResourceResolverFactory.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockResourceResolverFactoryActivator.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockSling.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockSlingRepository.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelper.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/RRMockMockResourceResolverAdapter.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ResourceResolverType.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/ThreadsafeMockAdapterManagerWrapper.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/builder/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/builder/package-info.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/ContextResourceResolverFactory.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/context/package-info.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/junit/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContext.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/junit/SlingContextCallback.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/junit/package-info.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/loader/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/loader/ContentLoader.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/loader/package-info.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/package-info.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/services/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/services/MockMimeTypeService.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/services/MockModelAdapterFactory.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/services/MockSlingSettingService.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/CookieSupport.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/HeaderSupport.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSession.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockRequestPathInfo.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockServletContext.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponse.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/ResponseBodySupport.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/servlet/package-info.java   (with props)
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/spi/
    sling/trunk/testing/sling-mock/src/main/java/org/apache/sling/testing/mock/sling/spi/ResourceResolverTypeAdapter.java   (with props)
    sling/trunk/testing/sling-mock/src/site/
    sling/trunk/testing/sling-mock/src/site/markdown/
    sling/trunk/testing/sling-mock/src/site/markdown/index.md
    sling/trunk/testing/sling-mock/src/site/markdown/resource-resolver-types.md
    sling/trunk/testing/sling-mock/src/site/markdown/usage-content-loader.md
    sling/trunk/testing/sling-mock/src/site/markdown/usage-mocks.md
    sling/trunk/testing/sling-mock/src/test/
    sling/trunk/testing/sling-mock/src/test/java/
    sling/trunk/testing/sling-mock/src/test/java/org/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/MockAdapterManagerTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/MockSlingRepositoryTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelperTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/builder/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/builder/ContentBuilderTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/context/SlingContextImplTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/loader/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/loader/ContentLoaderBinaryTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/loader/ContentLoaderJsonDamTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/loader/ContentLoaderJsonTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/JcrResourceResolverTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/SlingCrudResourceResolverTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/junit/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/junit/SlingContextTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/loader/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderBinaryTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonDamTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/loader/AbstractContentLoaderJsonTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractJcrResourceResolverTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractSlingCrudResourceResolverTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/loader/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/loader/ContentLoaderBinaryTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/loader/ContentLoaderJsonDamTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/loader/ContentLoaderJsonTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/SlingCrudResourceResolverTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/services/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/services/MockMimeTypeServiceTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/services/MockModelAdapterFactoryTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/services/MockSlingSettingServiceTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockHttpSessionTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockRequestPathInfoTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockServletContextTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletResponseTest.java   (with props)
    sling/trunk/testing/sling-mock/src/test/resources/
    sling/trunk/testing/sling-mock/src/test/resources/json-import-samples/
    sling/trunk/testing/sling-mock/src/test/resources/json-import-samples/content.json   (with props)
    sling/trunk/testing/sling-mock/src/test/resources/json-import-samples/dam.json   (with props)
    sling/trunk/testing/sling-mock/src/test/resources/sample-image.gif   (with props)
Modified:
    sling/trunk/pom.xml

Modified: sling/trunk/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/pom.xml?rev=1631356&r1=1631355&r2=1631356&view=diff
==============================================================================
--- sling/trunk/pom.xml (original)
+++ sling/trunk/pom.xml Mon Oct 13 11:54:39 2014
@@ -194,6 +194,10 @@
         <module>testing/junit/remote</module>
         <module>testing/junit/performance</module>
         <module>testing/resourceresolver-mock</module>
+        <module>testing/jcr-mock</module>
+        <module>testing/osgi-mock</module>
+        <module>testing/sling-mock</module>
+        <module>testing/sling-mock-jackrabbit</module>
         <module>testing/sling-pax-util</module>
         
         <!-- Installer -->

Added: sling/trunk/testing/jcr-mock/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/pom.xml?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/pom.xml (added)
+++ sling/trunk/testing/jcr-mock/pom.xml Mon Oct 13 11:54:39 2014
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling</artifactId>
+        <version>22</version>
+        <relativePath>../../parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>org.apache.sling.testing.jcr-mock</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>Apache Sling Testing JCR Mock</name>
+    <description>Mock implementation of selected JCR APIs.</description>
+
+    <properties>
+        <sling.java.version>6</sling.java.version>
+    </properties>
+
+    <dependencies>
+    
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+            <version>2.0</version>
+            <scope>compile</scope>
+        </dependency>
+    
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-jcr-commons</artifactId>
+            <version>2.8.0</version>
+            <scope>compile</scope>
+        </dependency>
+    
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>15.0</version>
+            <scope>compile</scope>
+        </dependency>
+    
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.0.1</version>
+            <scope>compile</scope>
+        </dependency>
+    
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+            <scope>test</scope>
+        </dependency>  
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <version>1.9.5</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+  
+    </dependencies>
+  
+</project>

Propchange: sling/trunk/testing/jcr-mock/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/pom.xml
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,129 @@
+/*
+ * 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.testing.mock.jcr;
+
+import javax.jcr.Item;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.ItemVisitor;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * Mock {@link Item} implementation.
+ */
+abstract class AbstractItem implements Item {
+
+    private final String path;
+    private final Session session;
+
+    public AbstractItem(final String path, final Session session) {
+        this.path = path;
+        this.session = session;
+    }
+
+    @Override
+    public String getName() {
+        return ResourceUtil.getName(this.path);
+    }
+
+    @Override
+    public String getPath() {
+        return this.path;
+    }
+
+    @Override
+    public Node getParent() throws RepositoryException {
+        return (Node) getSession().getItem(ResourceUtil.getParent(this.path));
+    }
+
+    @Override
+    public Session getSession() {
+        return this.session;
+    }
+
+    @Override
+    public boolean isModified() {
+        return false;
+    }
+
+    @Override
+    public boolean isNew() {
+        return false;
+    }
+
+    @Override
+    public Item getAncestor(final int depth) throws RepositoryException {
+        if (depth < 0 || depth > getDepth()) {
+            throw new ItemNotFoundException();
+        }
+        return this.session.getItem(ResourceUtil.getParent(this.path, depth));
+    }
+
+    protected String makeAbsolutePath(final String relativePath) {
+        String absolutePath = relativePath;
+        // ensure the path is absolute and normalized
+        if (!StringUtils.startsWith(absolutePath, "/")) {
+            absolutePath = this.path + "/" + absolutePath; // NOPMD
+        }
+        return ResourceUtil.normalize(absolutePath);
+    }
+
+    protected MockSession getMockedSession() {
+        return (MockSession) this.session;
+    }
+
+    @Override
+    public void remove() throws RepositoryException {
+        getSession().removeItem(getPath());
+    }
+
+    @Override
+    public int getDepth() throws RepositoryException {
+        if (StringUtils.equals("/", this.path)) {
+            return 0;
+        } else {
+            return StringUtils.countMatches(this.path, "/");
+        }
+    }
+
+    // --- unsupported operations ---
+    @Override
+    public void accept(final ItemVisitor visitor) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isSame(final Item otherItem) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void refresh(final boolean keepChanges) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void save() {
+        throw new UnsupportedOperationException();
+    }
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/AbstractItem.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,31 @@
+/*
+ * 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.testing.mock.jcr;
+
+import javax.jcr.Item;
+import javax.jcr.RepositoryException;
+
+/**
+ * Used internally for filtering items in JCR data map.
+ */
+interface ItemFilter {
+
+    boolean accept(Item item) throws RepositoryException;
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/ItemFilter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,62 @@
+/*
+ * 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.testing.mock.jcr;
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+/**
+ * Factory for mock JCR objects.
+ */
+public final class MockJcr {
+
+    /**
+     * Default workspace name
+     */
+    public static final String DEFAULT_WORKSPACE = "mockedWorkspace";
+
+    private MockJcr() {
+        // static methods only
+    }
+
+    /**
+     * Create a new mocked in-memory JCR repository. Beware: each session has
+     * its own data store.
+     * @return JCR repository
+     */
+    public static Repository newRepository() {
+        return new MockRepository();
+    }
+
+    /**
+     * Create a new mocked in-memory JCR session. It contains only the root
+     * node. All data of the session is thrown away if it gets garbage
+     * collected.
+     * @return JCR session
+     */
+    public static Session newSession() {
+        try {
+            return newRepository().login();
+        } catch (RepositoryException ex) {
+            throw new RuntimeException("Creating mocked JCR session failed.", ex);
+        }
+    }
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockJcr.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,72 @@
+/*
+ * 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.testing.mock.jcr;
+
+import java.util.Set;
+
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.RepositoryException;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+
+/**
+ * Mock {@link NamespaceRegistry} implementation.
+ */
+class MockNamespaceRegistry implements NamespaceRegistry {
+
+    private final BiMap<String, String> namespacePrefixMapping = HashBiMap.create();
+
+    public MockNamespaceRegistry() {
+        this.namespacePrefixMapping.put("jcr", "http://www.jcp.org/jcr/1.0");
+    }
+
+    @Override
+    public String getURI(final String prefix) {
+        return this.namespacePrefixMapping.get(prefix);
+    }
+
+    @Override
+    public String getPrefix(final String uri) {
+        return this.namespacePrefixMapping.inverse().get(uri);
+    }
+
+    @Override
+    public void registerNamespace(final String prefix, final String uri) {
+        this.namespacePrefixMapping.put(prefix, uri);
+    }
+
+    @Override
+    public void unregisterNamespace(final String prefix) {
+        this.namespacePrefixMapping.remove(prefix);
+    }
+
+    @Override
+    public String[] getPrefixes() throws RepositoryException {
+        Set<String> keys = this.namespacePrefixMapping.keySet();
+        return keys.toArray(new String[keys.size()]);
+    }
+
+    @Override
+    public String[] getURIs() throws RepositoryException {
+        Set<String> values = this.namespacePrefixMapping.values();
+        return values.toArray(new String[values.size()]);
+    }
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNamespaceRegistry.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,499 @@
+/*
+ * 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.testing.mock.jcr;
+
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.util.Calendar;
+import java.util.UUID;
+import java.util.regex.Pattern;
+
+import javax.jcr.Binary;
+import javax.jcr.Item;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
+import javax.jcr.RangeIterator;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.Value;
+import javax.jcr.lock.Lock;
+import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.version.Version;
+import javax.jcr.version.VersionHistory;
+
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
+import org.apache.jackrabbit.commons.iterator.PropertyIteratorAdapter;
+
+/**
+ * Mock {@link Node} implementation
+ */
+class MockNode extends AbstractItem implements Node {
+
+    private final UUID uuid = UUID.randomUUID();
+    private final NodeType nodeType;
+
+    public MockNode(final String path, final Session session, final NodeType nodeType) {
+        super(path, session);
+        this.nodeType = nodeType;
+    }
+
+    @Override
+    public Node addNode(final String relPath) throws RepositoryException {
+        return addNode(relPath, JcrConstants.NT_UNSTRUCTURED);
+    }
+
+    @Override
+    public Node addNode(final String relPath, final String primaryNodeTypeName) throws RepositoryException {
+        String path = makeAbsolutePath(relPath);
+        Node node = new MockNode(path, getSession(), new MockNodeType(primaryNodeTypeName));
+        getMockedSession().addItem(node);
+        return node;
+    }
+
+    @Override
+    public Node getNode(final String relPath) throws RepositoryException {
+        String path = makeAbsolutePath(relPath);
+        return getSession().getNode(path);
+    }
+
+    @Override
+    public NodeIterator getNodes() throws RepositoryException {
+        RangeIterator items = getMockedSession().listChildren(getPath(), new ItemFilter() {
+            @Override
+            public boolean accept(final Item item) {
+                return item instanceof Node;
+            }
+        });
+        return new NodeIteratorAdapter(items, items.getSize());
+    }
+
+    @Override
+    public NodeIterator getNodes(final String namePattern) throws RepositoryException {
+        final Pattern pattern = Pattern.compile(namePattern);
+        RangeIterator items = getMockedSession().listChildren(getPath(), new ItemFilter() {
+            @Override
+            public boolean accept(final Item item) throws RepositoryException {
+                return (item instanceof Node) && pattern.matcher(item.getName()).matches();
+            }
+        });
+        return new NodeIteratorAdapter(items, items.getSize());
+    }
+
+    @Override
+    public PropertyIterator getProperties() throws RepositoryException {
+        RangeIterator items = getMockedSession().listChildren(getPath(), new ItemFilter() {
+            @Override
+            public boolean accept(final Item item) {
+                return item instanceof Property;
+            }
+        });
+        return new PropertyIteratorAdapter(items, items.getSize());
+    }
+
+    @Override
+    public PropertyIterator getProperties(final String namePattern) throws RepositoryException {
+        final Pattern pattern = Pattern.compile(namePattern);
+        RangeIterator items = getMockedSession().listChildren(getPath(), new ItemFilter() {
+            @Override
+            public boolean accept(final Item item) throws RepositoryException {
+                return (item instanceof Property) && pattern.matcher(item.getName()).matches();
+            }
+        });
+        return new PropertyIteratorAdapter(items, items.getSize());
+    }
+
+    @Override
+    public Property getProperty(final String relPath) throws RepositoryException {
+        String path = makeAbsolutePath(relPath);
+        return getSession().getProperty(path);
+    }
+
+    @Override
+    public String getIdentifier() {
+        return this.uuid.toString();
+    }
+
+    @Override
+    public String getUUID() {
+        return getIdentifier();
+    }
+
+    @Override
+    public boolean hasNode(final String relPath) throws RepositoryException {
+        String path = makeAbsolutePath(relPath);
+        return getSession().nodeExists(path);
+    }
+
+    @Override
+    public boolean hasNodes() throws RepositoryException {
+        return getNodes().hasNext();
+    }
+
+    @Override
+    public boolean hasProperties() throws RepositoryException {
+        return getProperties().hasNext();
+    }
+
+    @Override
+    public boolean hasProperty(final String relPath) throws RepositoryException {
+        String path = makeAbsolutePath(relPath);
+        return getSession().propertyExists(path);
+    }
+
+    @Override
+    public Property setProperty(final String name, final Value value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final Value[] values) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(values);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final String[] values) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(values);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final String value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    @SuppressWarnings("deprecation")
+    public Property setProperty(final String name, final InputStream value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final boolean value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final double value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final long value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final Calendar value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final Node value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final Binary value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public Property setProperty(final String name, final BigDecimal value) throws RepositoryException {
+        Property property = new MockProperty(getPath() + "/" + name, getSession());
+        property.setValue(value);
+        getMockedSession().addItem(property);
+        return property;
+    }
+
+    @Override
+    public boolean isNode() {
+        return true;
+    }
+
+    @Override
+    public boolean isNodeType(final String nodeTypeName) throws RepositoryException {
+        return this.nodeType.isNodeType(nodeTypeName);
+    }
+
+    @Override
+    public NodeType getPrimaryNodeType() {
+        return this.nodeType;
+    }
+
+    @Override
+    public Item getPrimaryItem() throws RepositoryException {
+        // support "jcr:content" node and "jcr:data" property as primary items
+        if (hasProperty(JcrConstants.JCR_DATA)) {
+            return getProperty(JcrConstants.JCR_DATA);
+        } else if (hasNode(JcrConstants.JCR_CONTENT)) {
+            return getNode(JcrConstants.JCR_CONTENT);
+        } else {
+            throw new ItemNotFoundException();
+        }
+    }
+
+    // --- unsupported operations ---
+    @Override
+    public Property setProperty(final String name, final Value value, final int type) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Property setProperty(final String name, final Value[] values, final int type) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Property setProperty(final String name, final String[] values, final int type) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Property setProperty(final String name, final String value, final int type) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void addMixin(final String pMixinName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean canAddMixin(final String pMixinName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void cancelMerge(final Version pVersion) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Version checkin() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void checkout() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void doneMerge(final Version pVersion) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Version getBaseVersion() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getCorrespondingNodePath(final String workspaceName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeDefinition getDefinition() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getIndex() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Lock getLock() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeType[] getMixinNodeTypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public PropertyIterator getReferences() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public VersionHistory getVersionHistory() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean holdsLock() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isCheckedOut() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isLocked() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Lock lock(final boolean isDeep, final boolean isSessionScoped) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeIterator merge(final String srcWorkspace, final boolean bestEffort) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void orderBefore(final String srcChildRelPath, final String destChildRelPath) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void removeMixin(final String mixinName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void restore(final String versionName, final boolean removeExisting) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void restore(final Version version, final boolean removeExisting) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void restore(final Version version, final String relPath, final boolean removeExisting) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void restoreByLabel(final String versionLabel, final boolean removeExisting) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void unlock() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void update(final String srcWorkspaceName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void followLifecycleTransition(final String transition) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String[] getAllowedLifecycleTransistions() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeIterator getNodes(final String[] nameGlobs) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public PropertyIterator getProperties(final String[] nameGlobs) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public PropertyIterator getReferences(final String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeIterator getSharedSet() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public PropertyIterator getWeakReferences() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public PropertyIterator getWeakReferences(final String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void removeShare() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void removeSharedSet() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setPrimaryType(final String pNodeTypeName) {
+        throw new UnsupportedOperationException();
+    }
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNode.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeType.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeType.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeType.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeType.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,155 @@
+/*
+ * 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.testing.mock.jcr;
+
+import javax.jcr.Value;
+import javax.jcr.nodetype.NodeDefinition;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.PropertyDefinition;
+
+/**
+ * Mock {@link NodeType} implementation.
+ */
+class MockNodeType implements NodeType {
+
+    private final String name;
+
+    public MockNodeType(final String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return this.name;
+    }
+
+    @Override
+    public boolean isNodeType(final String nodeTypeName) {
+        // node type inheritance not supported
+        return this.name.equals(nodeTypeName);
+    }
+
+    // --- unsupported operations ---
+    @Override
+    public boolean canAddChildNode(final String childNodeName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean canAddChildNode(final String childNodeName, final String nodeTypeName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean canRemoveItem(final String itemName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean canSetProperty(final String propertyName, final Value value) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean canSetProperty(final String propertyName, final Value[] values) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeDefinition[] getChildNodeDefinitions() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeDefinition[] getDeclaredChildNodeDefinitions() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public PropertyDefinition[] getDeclaredPropertyDefinitions() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeType[] getDeclaredSupertypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getPrimaryItemName() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public PropertyDefinition[] getPropertyDefinitions() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeType[] getSupertypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean hasOrderableChildNodes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isMixin() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean canRemoveNode(final String nodeName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean canRemoveProperty(final String propertyName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeTypeIterator getDeclaredSubtypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeTypeIterator getSubtypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String[] getDeclaredSupertypeNames() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isAbstract() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isQueryable() {
+        throw new UnsupportedOperationException();
+    }
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeType.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeType.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeType.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypeManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypeManager.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypeManager.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypeManager.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,103 @@
+/*
+ * 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.testing.mock.jcr;
+
+import javax.jcr.nodetype.NodeDefinitionTemplate;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeDefinition;
+import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.NodeTypeManager;
+import javax.jcr.nodetype.NodeTypeTemplate;
+import javax.jcr.nodetype.PropertyDefinitionTemplate;
+
+/**
+ * Mock {@link NodeTypeManager} implementation.
+ */
+class MockNodeTypeManager implements NodeTypeManager {
+
+    @Override
+    public NodeType getNodeType(String nodeTypeName) {
+        // accept all node types and return a mock
+        return new MockNodeType(nodeTypeName);
+    }
+
+    @Override
+    public boolean hasNodeType(String name) {
+        // accept all node types
+        return true;
+    }
+
+    // --- unsupported operations ---
+
+    @Override
+    public NodeTypeIterator getAllNodeTypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeTypeIterator getPrimaryNodeTypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeTypeIterator getMixinNodeTypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeTypeTemplate createNodeTypeTemplate() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeTypeTemplate createNodeTypeTemplate(NodeTypeDefinition ntd) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeDefinitionTemplate createNodeDefinitionTemplate() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public PropertyDefinitionTemplate createPropertyDefinitionTemplate() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeType registerNodeType(NodeTypeDefinition ntd, boolean allowUpdate) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public NodeTypeIterator registerNodeTypes(NodeTypeDefinition[] ntds, boolean allowUpdate) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void unregisterNodeType(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void unregisterNodeTypes(String[] names) {
+        throw new UnsupportedOperationException();
+    }
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypeManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypeManager.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypeManager.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypes.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypes.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypes.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypes.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,49 @@
+/*
+ * 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.testing.mock.jcr;
+
+import javax.jcr.nodetype.NodeType;
+
+import org.apache.jackrabbit.JcrConstants;
+
+/**
+ * Collection of mocked node type instances.
+ */
+public final class MockNodeTypes {
+
+    private MockNodeTypes() {
+        // constants only
+    }
+
+    /**
+     * Node type NT_UNSTRUCTURED
+     */
+    public static final NodeType NT_UNSTRUCTURED = new MockNodeType(JcrConstants.NT_UNSTRUCTURED);
+
+    /**
+     * Node type NT_FOLDER
+     */
+    public static final NodeType NT_FOLDER = new MockNodeType(JcrConstants.NT_FOLDER);
+
+    /**
+     * Node type NT_FILE
+     */
+    public static final NodeType NT_FILE = new MockNodeType(JcrConstants.NT_FILE);
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypes.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypes.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockNodeTypes.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockObservationManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockObservationManager.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockObservationManager.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockObservationManager.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,65 @@
+/*
+ * 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.testing.mock.jcr;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.observation.EventJournal;
+import javax.jcr.observation.EventListener;
+import javax.jcr.observation.EventListenerIterator;
+import javax.jcr.observation.ObservationManager;
+
+/**
+ * Mock {@link ObservationManager} implementation.
+ */
+class MockObservationManager implements ObservationManager {
+
+    @Override
+    public void addEventListener(final EventListener listener, final int eventTypes, final String absPath,
+            final boolean isDeep, final String[] uuid, final String[] nodeTypeName, final boolean noLocal) {
+        // do nothing
+    }
+
+    @Override
+    public void removeEventListener(final EventListener listener) {
+        // do nothing
+    }
+
+    // --- unsupported operations ---
+    @Override
+    public EventListenerIterator getRegisteredEventListeners() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setUserData(final String userData) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public EventJournal getEventJournal() throws RepositoryException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public EventJournal getEventJournal(final int eventTypes, final String absPath, final boolean isDeep,
+            final String[] uuid, final String[] nodeTypeName) {
+        throw new UnsupportedOperationException();
+    }
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockObservationManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockObservationManager.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockObservationManager.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java?rev=1631356&view=auto
==============================================================================
--- sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java (added)
+++ sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java Mon Oct 13 11:54:39 2014
@@ -0,0 +1,306 @@
+/*
+ * 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.testing.mock.jcr;
+
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.util.Calendar;
+
+import javax.jcr.Binary;
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.Value;
+import javax.jcr.ValueFormatException;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.PropertyDefinition;
+
+import org.apache.jackrabbit.value.BinaryValue;
+
+/**
+ * Mock {@link Property} implementation
+ */
+class MockProperty extends AbstractItem implements Property {
+
+    private Value[] values;
+    private boolean isMultiple;
+
+    public MockProperty(final String path, final Session session) throws RepositoryException {
+        super(path, session);
+        this.values = new Value[] { getSession().getValueFactory().createValue("") };
+    }
+
+    private Value internalGetValue() throws ValueFormatException {
+        if (this.values.length > 1) {
+            throw new ValueFormatException(this
+                    + " is a multi-valued property, so it's values can only be retrieved as an array");
+        } else {
+            return this.values[0];
+        }
+    }
+
+    @Override
+    public Value getValue() throws ValueFormatException {
+        return internalGetValue();
+    }
+
+    @Override
+    public Value[] getValues() {
+        Value[] valuesCopy = new Value[this.values.length];
+        for (int i = 0; i < this.values.length; i++) {
+            valuesCopy[i] = this.values[i];
+        }
+        return valuesCopy;
+    }
+
+    @Override
+    public void setValue(final Value newValue) {
+        this.values = new Value[] { newValue };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final Value[] newValues) {
+        this.values = new Value[newValues.length];
+        for (int i = 0; i < newValues.length; i++) {
+            this.values[i] = newValues[i];
+        }
+        this.isMultiple = true;
+    }
+
+    @Override
+    public void setValue(final String newValue) throws RepositoryException {
+        this.values = new Value[] { getSession().getValueFactory().createValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final String[] newValues) throws RepositoryException {
+        this.values = new Value[newValues.length];
+        for (int i = 0; i < newValues.length; i++) {
+            this.values[i] = getSession().getValueFactory().createValue(newValues[i]);
+        }
+        this.isMultiple = true;
+    }
+
+    @Override
+    public void setValue(final InputStream newValue) throws RepositoryException {
+        this.values = new Value[] { new BinaryValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final long newValue) throws RepositoryException {
+        this.values = new Value[] { getSession().getValueFactory().createValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final double newValue) throws RepositoryException {
+        this.values = new Value[] { getSession().getValueFactory().createValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final Calendar newValue) throws RepositoryException {
+        this.values = new Value[] { getSession().getValueFactory().createValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final boolean newValue) throws RepositoryException {
+        this.values = new Value[] { getSession().getValueFactory().createValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final Node newValue) throws RepositoryException {
+        this.values = new Value[] { getSession().getValueFactory().createValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final Binary newValue) throws RepositoryException {
+        this.values = new Value[] { new BinaryValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public void setValue(final BigDecimal newValue) throws RepositoryException {
+        this.values = new Value[] { getSession().getValueFactory().createValue(newValue) };
+        this.isMultiple = false;
+    }
+
+    @Override
+    public boolean getBoolean() throws RepositoryException {
+        return internalGetValue().getBoolean();
+    }
+
+    @Override
+    public Calendar getDate() throws RepositoryException {
+        return internalGetValue().getDate();
+    }
+
+    @Override
+    public double getDouble() throws RepositoryException {
+        return internalGetValue().getDouble();
+    }
+
+    @Override
+    public long getLong() throws RepositoryException {
+        return internalGetValue().getLong();
+    }
+
+    @Override
+    public String getString() throws RepositoryException {
+        return internalGetValue().getString();
+    }
+
+    @Override
+    @SuppressWarnings("deprecation")
+    public InputStream getStream() throws RepositoryException {
+        return internalGetValue().getStream();
+    }
+
+    @Override
+    public Binary getBinary() throws RepositoryException {
+        return internalGetValue().getBinary();
+    }
+
+    @Override
+    public BigDecimal getDecimal() throws RepositoryException {
+        return internalGetValue().getDecimal();
+    }
+
+    @Override
+    public int getType() throws RepositoryException {
+        return this.values[0].getType();
+    }
+
+    @Override
+    public long getLength() throws RepositoryException {
+        return getValue().getString().length();
+    }
+
+    @Override
+    public long[] getLengths() throws RepositoryException {
+        long[] lengths = new long[this.values.length];
+        for (int i = 0; i < this.values.length; i++) {
+            lengths[i] = this.values[i].getString().length();
+        }
+        return lengths;
+    }
+
+    @Override
+    public boolean isNode() {
+        return false;
+    }
+
+    @Override
+    public boolean isMultiple() {
+        return this.isMultiple;
+    }
+
+    @Override
+    public PropertyDefinition getDefinition() {
+        return new MockPropertyDefinition();
+    }
+
+    // --- unsupported operations ---
+    @Override
+    public Node getNode() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Property getProperty() {
+        throw new UnsupportedOperationException();
+    }
+
+    private final class MockPropertyDefinition implements PropertyDefinition {
+
+        @Override
+        public boolean isMultiple() {
+            return MockProperty.this.isMultiple();
+        }
+
+        // --- unsupported operations ---
+        @Override
+        public Value[] getDefaultValues() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public int getRequiredType() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public String[] getValueConstraints() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public NodeType getDeclaringNodeType() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public String getName() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public int getOnParentVersion() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean isAutoCreated() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean isMandatory() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean isProtected() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public String[] getAvailableQueryOperators() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean isFullTextSearchable() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean isQueryOrderable() {
+            throw new UnsupportedOperationException();
+        }
+    }
+
+}

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Mon Oct 13 11:54:39 2014
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/testing/jcr-mock/src/main/java/org/apache/sling/testing/mock/jcr/MockProperty.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain