Author: cziegeler
Date: Wed Apr 17 07:39:28 2013
New Revision: 1468784

URL: http://svn.apache.org/r1468784
Log:
Add new testing module for easy mocking of a resource resolver

Added:
    sling/trunk/testing/resourceresolver-mock/   (with props)
    sling/trunk/testing/resourceresolver-mock/pom.xml   (with props)
    sling/trunk/testing/resourceresolver-mock/src/
    sling/trunk/testing/resourceresolver-mock/src/main/
    sling/trunk/testing/resourceresolver-mock/src/main/java/
    sling/trunk/testing/resourceresolver-mock/src/main/java/org/
    sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/
    sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/
    
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/
    
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/
    
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java
   (with props)
    
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
   (with props)
    
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java
   (with props)
Modified:
    sling/trunk/pom.xml

Modified: sling/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/pom.xml?rev=1468784&r1=1468783&r2=1468784&view=diff
==============================================================================
--- sling/trunk/pom.xml (original)
+++ sling/trunk/pom.xml Wed Apr 17 07:39:28 2013
@@ -182,6 +182,7 @@
         <module>testing/junit/core</module>
         <module>testing/junit/scriptable</module>
         <module>testing/junit/remote</module>
+        <module>testing/resourceresolver-mock</module>
         
         <!-- Installer -->
         <module>installer/api</module>

Propchange: sling/trunk/testing/resourceresolver-mock/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Apr 17 07:39:28 2013
@@ -0,0 +1,10 @@
+target
+bin
+*.iml
+*.ipr
+*.iws
+.settings
+.project
+.classpath
+.externalToolBuilders
+maven-eclipse.xml

Added: sling/trunk/testing/resourceresolver-mock/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/resourceresolver-mock/pom.xml?rev=1468784&view=auto
==============================================================================
--- sling/trunk/testing/resourceresolver-mock/pom.xml (added)
+++ sling/trunk/testing/resourceresolver-mock/pom.xml Wed Apr 17 07:39:28 2013
@@ -0,0 +1,74 @@
+<?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/maven-v4_0_0.xsd";>
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling</artifactId>
+        <version>15</version>
+        <relativePath>../../parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>org.apache.sling.testing.resourceresolver-mock</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+
+    <name>Apache Sling Testing Resource Resolver Mock</name>
+    <description>
+        Mock for the resource resolver / factory for easier testing.
+    </description>
+
+    <scm>
+        
<connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/testing/resourceresolver-mock</connection>
+        
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/testing/resourceresolver-mock</developerConnection>
+        
<url>http://svn.apache.org/viewvc/sling/trunk/testing/resourceresolver-mock</url>
+    </scm>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <configuration>
+                    <excludePackageNames>
+                        org.apache.sling.testing.resourceresolver
+                    </excludePackageNames>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <dependencies>
+         <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.api</artifactId>
+            <version>2.4.1-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+            <version>4.3.0</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+        </dependency>
+    </dependencies>
+</project>

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

Propchange: sling/trunk/testing/resourceresolver-mock/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java?rev=1468784&view=auto
==============================================================================
--- 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java
 (added)
+++ 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java
 Wed Apr 17 07:39:28 2013
@@ -0,0 +1,90 @@
+/*
+ * 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.resourceresolver;
+
+import java.util.Map;
+
+import org.apache.sling.api.resource.AbstractResource;
+import org.apache.sling.api.resource.ModifiableValueMap;
+import org.apache.sling.api.resource.ResourceMetadata;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.api.wrappers.ModifiableValueMapDecorator;
+import org.apache.sling.api.wrappers.ValueMapDecorator;
+
+public class MockResource extends AbstractResource {
+
+    private final String path;
+
+    private final Map<String, Object> props;
+
+    private final ResourceMetadata rm = new ResourceMetadata();
+
+    private final ResourceResolver resolver;
+
+    public MockResource(final String path,
+            final Map<String, Object> props,
+            final ResourceResolver resolver) {
+        this.path = path;
+        this.props = props;
+        this.resolver = resolver;
+    }
+
+    @Override
+    public String getPath() {
+        return this.path;
+    }
+
+    @Override
+    public String getResourceType() {
+        return (String)this.props.get(ResourceResolver.PROPERTY_RESOURCE_TYPE);
+    }
+
+    @Override
+    public String getResourceSuperType() {
+        return (String)this.props.get("sling:resourceSuperType");
+    }
+
+    @Override
+    public ResourceMetadata getResourceMetadata() {
+        return rm;
+    }
+
+    @Override
+    public ResourceResolver getResourceResolver() {
+        return this.resolver;
+    }
+
+    @Override
+    public <AdapterType> AdapterType adaptTo(final Class<AdapterType> type) {
+        if ( type == ValueMap.class ) {
+            return (AdapterType)new ValueMapDecorator(this.props);
+        } else if ( type == ModifiableValueMap.class ) {
+            ((MockResourceResolver)this.resolver).addChanged(this.path, 
this.props);
+            return (AdapterType)new ModifiableValueMapDecorator(this.props);
+        }
+        return super.adaptTo(type);
+    }
+
+    @Override
+    public String toString() {
+        return "MockResource [path=" + path + ", props=" + props + "]";
+    }
+
+}

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

Propchange: 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResource.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java?rev=1468784&view=auto
==============================================================================
--- 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
 (added)
+++ 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
 Wed Apr 17 07:39:28 2013
@@ -0,0 +1,325 @@
+/*
+ * 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.resourceresolver;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.sling.api.SlingConstants;
+import org.apache.sling.api.resource.LoginException;
+import org.apache.sling.api.resource.PersistenceException;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+
+public class MockResourceResolver implements ResourceResolver {
+
+    private final Map<String, Map<String, Object>> resources;
+
+    private final Map<String, Map<String, Object>> temporaryResources = new 
HashMap<String, Map<String,Object>>();
+
+    private final Set<String> deletedResources = new HashSet<String>();
+
+    private final EventAdmin eventAdmin;
+
+    public MockResourceResolver(final EventAdmin eventAdmin,
+            final Map<String, Map<String, Object>> resources) {
+        this.eventAdmin = eventAdmin;
+        this.resources = resources;
+    }
+
+    @Override
+    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+        return null;
+    }
+
+    @Override
+    public Resource resolve(final HttpServletRequest request, final String 
absPath) {
+        return this.getResource(absPath);
+    }
+
+    @Override
+    public Resource resolve(final String absPath) {
+        return this.getResource(absPath);
+    }
+
+    @Override
+    @Deprecated
+    public Resource resolve(final HttpServletRequest request) {
+        return null;
+    }
+
+    @Override
+    public String map(final String resourcePath) {
+        return resourcePath;
+    }
+
+    @Override
+    public String map(final HttpServletRequest request, final String 
resourcePath) {
+        return resourcePath;
+    }
+
+    @Override
+    public Resource getResource(final String path) {
+        if ( path.startsWith("/") ) {
+            if ( this.deletedResources.contains(path) ) {
+                return null;
+            }
+            final Map<String, Object> tempProps = 
this.temporaryResources.get(path);
+            if ( tempProps != null ) {
+                final Resource rsrc = new MockResource(path, tempProps, this);
+                return rsrc;
+            }
+            synchronized ( this.resources ) {
+                final Map<String, Object> props = this.resources.get(path);
+                if ( props != null ) {
+                    final Resource rsrc = new MockResource(path, props, this);
+                    return rsrc;
+                }
+            }
+        } else {
+            for(final String s : this.getSearchPath() ) {
+                final Resource rsrc = this.getResource(s + '/' + path);
+                if ( rsrc != null ) {
+                    return rsrc;
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public Resource getResource(Resource base, String path) {
+        if ( path == null || path.length() == 0 ) {
+            path = "/";
+        }
+        if ( path.startsWith("/") ) {
+            return getResource(path);
+        }
+        if ( base.getPath().equals("/") ) {
+            return getResource(base.getPath() + path);
+        }
+        return getResource(base.getPath() + '/' + path);
+    }
+
+    @Override
+    public String[] getSearchPath() {
+        return new String[] {"/libs", "/apps"};
+    }
+
+    @Override
+    public Iterator<Resource> listChildren(final Resource parent) {
+        final String prefixPath = parent.getPath() + "/";
+        final Map<String, Map<String, Object>> candidates = new 
HashMap<String, Map<String,Object>>();
+        synchronized ( this.resources ) {
+            for(final Map.Entry<String, Map<String, Object>> e : 
this.resources.entrySet()) {
+                if (e.getKey().startsWith(prefixPath) && 
e.getKey().lastIndexOf('/') < prefixPath.length() ) {
+                    if ( !this.deletedResources.contains(e.getKey()) ) {
+                        candidates.put(e.getKey(), e.getValue());
+                    }
+                }
+            }
+            for(final Map.Entry<String, Map<String, Object>> e : 
this.temporaryResources.entrySet()) {
+                if (e.getKey().startsWith(prefixPath) && 
e.getKey().lastIndexOf('/') < prefixPath.length() ) {
+                    if ( !this.deletedResources.contains(e.getKey()) ) {
+                        candidates.put(e.getKey(), e.getValue());
+                    }
+                }
+            }
+        }
+        final List<Resource> children = new ArrayList<Resource>();
+        for(final Map.Entry<String, Map<String, Object>> e : 
candidates.entrySet()) {
+            children.add(new MockResource(e.getKey(), e.getValue(), this));
+        }
+        return children.iterator();
+    }
+
+    @Override
+    public Iterable<Resource> getChildren(final Resource parent) {
+        return new Iterable<Resource>() {
+
+            @Override
+            public Iterator<Resource> iterator() {
+                return listChildren(parent);
+            }
+        };
+    }
+
+    @Override
+    public Iterator<Resource> findResources(final String query, final String 
language) {
+        final List<Resource> emptyList = Collections.emptyList();
+        return emptyList.iterator();
+    }
+
+    @Override
+    public Iterator<Map<String, Object>> queryResources(String query,
+            String language) {
+        final List<Map<String, Object>> emptyList = Collections.emptyList();
+        return emptyList.iterator();
+    }
+
+    @Override
+    public ResourceResolver clone(Map<String, Object> authenticationInfo)
+            throws LoginException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public boolean isLive() {
+        return true;
+    }
+
+    @Override
+    public void close() {
+        // nothing to do
+    }
+
+    @Override
+    public String getUserID() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Iterator<String> getAttributeNames() {
+        final List<String> emptyList = Collections.emptyList();
+        return emptyList.iterator();
+    }
+
+    @Override
+    public Object getAttribute(final String name) {
+        return null;
+    }
+
+    @Override
+    public void delete(final Resource resource) throws PersistenceException {
+        this.deletedResources.add(resource.getPath());
+        this.temporaryResources.remove(resource.getPath());
+        final String prefixPath = resource.getPath() + '/';
+        synchronized ( this.resources ) {
+            for(final Map.Entry<String, Map<String, Object>> e : 
this.resources.entrySet()) {
+                if (e.getKey().startsWith(prefixPath)) {
+                    this.deletedResources.add(e.getKey());
+                }
+            }
+            final Iterator<Map.Entry<String, Map<String, Object>>> i = 
this.temporaryResources.entrySet().iterator();
+            while ( i.hasNext() ) {
+                final Map.Entry<String, Map<String, Object>> e = i.next();
+                if (e.getKey().startsWith(prefixPath) ) {
+                    i.remove();
+                }
+            }
+        }
+    }
+
+    @Override
+    public Resource create(Resource parent, String name,
+            Map<String, Object> properties) throws PersistenceException {
+        final String path = (parent.getPath().equals("/") ? parent.getPath() + 
name : parent.getPath() + '/' + name);
+        if ( this.temporaryResources.containsKey(path) ) {
+            throw new PersistenceException("Path already exists: " + path);
+        }
+        synchronized ( this.resources ) {
+            if ( this.resources.containsKey(path) ) {
+                throw new PersistenceException("Path already exists: " + path);
+            }
+        }
+        this.deletedResources.remove(path);
+        if ( properties == null ) {
+            properties = new HashMap<String, Object>();
+        }
+        this.temporaryResources.put(path, properties);
+
+        return new MockResource(path, properties, this);
+    }
+
+    @Override
+    public void revert() {
+        this.deletedResources.clear();
+        this.temporaryResources.clear();
+    }
+
+    @Override
+    public void commit() throws PersistenceException {
+        synchronized ( this.resources ) {
+            for(final String path : this.deletedResources ) {
+                if ( this.resources.remove(path) != null && this.eventAdmin != 
null ) {
+                    final Map<String, Object> props = new HashMap<String, 
Object>();
+                    props.put(SlingConstants.PROPERTY_PATH, path);
+                    final Event e = new 
Event(SlingConstants.TOPIC_RESOURCE_REMOVED, props);
+                    this.eventAdmin.sendEvent(e);
+                }
+                this.temporaryResources.remove(path);
+            }
+            for(final String path : this.temporaryResources.keySet() ) {
+                final boolean changed = this.resources.containsKey(path);
+                this.resources.put(path, this.temporaryResources.get(path));
+                if ( this.eventAdmin != null ) {
+                    final Map<String, Object> props = new HashMap<String, 
Object>();
+                    props.put(SlingConstants.PROPERTY_PATH, path);
+                    if ( 
this.resources.get(path).get(ResourceResolver.PROPERTY_RESOURCE_TYPE) != null ) 
{
+                        props.put(SlingConstants.PROPERTY_RESOURCE_TYPE, 
this.resources.get(path).get(ResourceResolver.PROPERTY_RESOURCE_TYPE));
+                    }
+                    final Event e = new Event(changed ? 
SlingConstants.TOPIC_RESOURCE_CHANGED : SlingConstants.TOPIC_RESOURCE_ADDED, 
props);
+                    this.eventAdmin.sendEvent(e);
+                }
+            }
+        }
+        this.revert();
+    }
+
+    @Override
+    public boolean hasChanges() {
+        return this.temporaryResources.size() > 0 || 
this.deletedResources.size() > 0;
+    }
+
+    @Override
+    public String getParentResourceType(Resource resource) {
+        return null;
+    }
+
+    @Override
+    public String getParentResourceType(String resourceType) {
+        return null;
+    }
+
+    @Override
+    public boolean isResourceType(Resource resource, String resourceType) {
+        return resource.getResourceType().equals(resourceType);
+    }
+
+    @Override
+    public void refresh() {
+        // nothing to do
+    }
+
+    public void addChanged(final String path, final Map<String, Object> props) 
{
+        this.temporaryResources.put(path, props);
+    }
+}

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

Propchange: 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java?rev=1468784&view=auto
==============================================================================
--- 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java
 (added)
+++ 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java
 Wed Apr 17 07:39:28 2013
@@ -0,0 +1,56 @@
+/*
+ * 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.resourceresolver;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.sling.api.resource.LoginException;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
+import org.osgi.service.event.EventAdmin;
+
+public class MockResourceResolverFactory implements ResourceResolverFactory {
+
+    private final Map<String, Map<String, Object>> resources = new 
HashMap<String, Map<String, Object>>();
+
+    private final EventAdmin eventAdmin;
+
+    public MockResourceResolverFactory(final EventAdmin eventAdmin) {
+        this.eventAdmin = eventAdmin;
+        resources.put("/", new HashMap<String, Object>());
+    }
+
+    public MockResourceResolverFactory() {
+        this(null);
+    }
+
+    @Override
+    public ResourceResolver getResourceResolver(
+            final Map<String, Object> authenticationInfo) throws 
LoginException {
+        return new MockResourceResolver(this.eventAdmin, resources);
+    }
+
+    @Override
+    public ResourceResolver getAdministrativeResourceResolver(
+            final Map<String, Object> authenticationInfo) throws 
LoginException {
+        return new MockResourceResolver(this.eventAdmin, resources);
+    }
+
+}

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

Propchange: 
sling/trunk/testing/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url


Reply via email to