Return-Path: X-Original-To: apmail-sling-commits-archive@www.apache.org Delivered-To: apmail-sling-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 04F33CD30 for ; Tue, 5 Jun 2012 14:53:03 +0000 (UTC) Received: (qmail 49239 invoked by uid 500); 5 Jun 2012 14:53:02 -0000 Delivered-To: apmail-sling-commits-archive@sling.apache.org Received: (qmail 49206 invoked by uid 500); 5 Jun 2012 14:53:02 -0000 Mailing-List: contact commits-help@sling.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@sling.apache.org Delivered-To: mailing list commits@sling.apache.org Received: (qmail 49198 invoked by uid 99); 5 Jun 2012 14:53:02 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Jun 2012 14:53:02 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Jun 2012 14:53:00 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 59FFF2388962; Tue, 5 Jun 2012 14:52:40 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1346403 - in /sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl: ./ helper/ mapping/ tree/ Date: Tue, 05 Jun 2012 14:52:40 -0000 To: commits@sling.apache.org From: cziegeler@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120605145240.59FFF2388962@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cziegeler Date: Tue Jun 5 14:52:39 2012 New Revision: 1346403 URL: http://svn.apache.org/viewvc?rev=1346403&view=rev Log: SLING-2396 : Add new resource provider interfaces (WiP) Added: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java (with props) sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java (contents, props changed) - copied, changed from r1346349, sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/MapEntryTest.java sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/tree/ sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntryTest.java (contents, props changed) - copied, changed from r1346349, sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java Removed: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/MapEntryTest.java sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java Modified: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderListTest.java Added: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java?rev=1346403&view=auto ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java (added) +++ sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java Tue Jun 5 14:52:39 2012 @@ -0,0 +1,408 @@ +/* + * 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.resourceresolver.impl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.BufferedReader; +import java.security.Principal; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +import javax.jcr.Session; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletInputStream; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.sling.api.resource.NonExistingResource; +import org.apache.sling.api.resource.Resource; +import org.apache.sling.api.resource.ResourceResolver; +import org.apache.sling.api.resource.ResourceResolverFactory; +import org.junit.Before; +import org.junit.Test; + +public class ResourceResolverImplTest { + + private ResourceResolver resResolver; + + private ResourceResolverFactoryImpl resFac; + + @Before public void setup() { + resFac = new ResourceResolverFactoryImpl(); + resResolver = new ResourceResolverImpl(resFac, null); + } + + @SuppressWarnings("deprecation") + @Test public void testBasicAPIAssumptions() throws Exception { + + // null resource is accessing /, which exists of course + final Resource res00 = resResolver.resolve((String) null); + assertNotNull(res00); + assertTrue("Resource must be NonExistingResource", + res00 instanceof NonExistingResource); + assertEquals("Null path is expected to return root", "/", + res00.getPath()); + + // relative paths are treated as if absolute + final String path01 = "relPath/relPath"; + final Resource res01 = resResolver.resolve(path01); + assertNotNull(res01); + assertEquals("Expecting absolute path for relative path", "/" + path01, + res01.getPath()); + assertTrue("Resource must be NonExistingResource", + res01 instanceof NonExistingResource); + + final String no_resource_path = "/no_resource/at/this/location"; + final Resource res02 = resResolver.resolve(no_resource_path); + assertNotNull(res02); + assertEquals("Expecting absolute path for relative path", + no_resource_path, res02.getPath()); + assertTrue("Resource must be NonExistingResource", + res01 instanceof NonExistingResource); + + try { + resResolver.resolve((HttpServletRequest) null); + fail("Expected NullPointerException trying to resolve null request"); + } catch (NullPointerException npe) { + // expected + } + + final Resource res0 = resResolver.resolve(null, no_resource_path); + assertNotNull("Expecting resource if resolution fails", res0); + assertTrue("Resource must be NonExistingResource", + res0 instanceof NonExistingResource); + assertEquals("Path must be the original path", no_resource_path, + res0.getPath()); + + final HttpServletRequest req1 = new ResourceResolverTestRequest( + no_resource_path); + final Resource res1 = resResolver.resolve(req1); + assertNotNull("Expecting resource if resolution fails", res1); + assertTrue("Resource must be NonExistingResource", + res1 instanceof NonExistingResource); + assertEquals("Path must be the original path", no_resource_path, + res1.getPath()); + + final HttpServletRequest req2 = new ResourceResolverTestRequest(null); + final Resource res2 = resResolver.resolve(req2); + assertNotNull("Expecting resource if resolution fails", res2); + assertTrue("Resource must be NonExistingResource", + res2 instanceof NonExistingResource); + assertEquals("Path must be the the root path", "/", res2.getPath()); + } + + @Test public void test_clone_based_on_anonymous() throws Exception { + final ResourceResolver anon0 = resFac.getResourceResolver((Map) null); + // no session + final Session anon0Session = anon0.adaptTo(Session.class); + assertNull("Session should not be available", anon0Session); + // no user information, so user id is null + assertEquals(null, anon0.getUserID()); + + // same user and workspace + final ResourceResolver anon1 = anon0.clone(null); + final Session anon1Session = anon1.adaptTo(Session.class); + assertEquals(anon0.getUserID(), anon1.getUserID()); + assertNull("Session should not be available", anon1Session); + anon1.close(); + + // same workspace but admin user + final Map admin0Cred = new HashMap(); + admin0Cred.put(ResourceResolverFactory.USER, "admin"); + admin0Cred.put(ResourceResolverFactory.PASSWORD, "admin".toCharArray()); + final ResourceResolver admin0 = anon0.clone(admin0Cred); + assertEquals("admin", admin0.getUserID()); + admin0.close(); + + anon0.close(); + } + + @Test public void test_clone_based_on_admin() throws Exception { + final ResourceResolver admin0 = resFac.getAdministrativeResourceResolver((Map) null); + // no user information, so user id is null + assertEquals(null, admin0.getUserID()); + + // same user and workspace + final ResourceResolver admin1 = admin0.clone(null); + assertEquals(admin0.getUserID(), admin1.getUserID()); + admin1.close(); + + // same workspace but anonymous user + final Map anon0Cred = new HashMap(); + anon0Cred.put(ResourceResolverFactory.USER, "anonymous"); + final ResourceResolver anon0 = admin0.clone(anon0Cred); + assertEquals("anonymous", anon0.getUserID()); + anon0.close(); + + admin0.close(); + } + + private static final class ResourceResolverTestRequest implements + HttpServletRequest { + + private final String pathInfo; + + private final String method; + + private final String scheme; + + private final String host; + + private final int port; + + private final Map attrs = new HashMap(); + + private String contextPath; + + ResourceResolverTestRequest(String pathInfo) { + this(null, null, -1, pathInfo, null); + } + + ResourceResolverTestRequest(String scheme, String host, int port, + String pathInfo, String httpMethod) { + this.scheme = (scheme == null) ? "http" : scheme; + this.host = (host == null) ? "localhost" : host; + this.port = port; + this.pathInfo = pathInfo; + this.method = httpMethod; + } + + public String getPathInfo() { + return pathInfo; + } + + public Object getAttribute(String name) { + return attrs.get(name); + } + + public Enumeration getAttributeNames() { + return null; + } + + public String getCharacterEncoding() { + return null; + } + + public int getContentLength() { + return 0; + } + + public String getContentType() { + return null; + } + + public ServletInputStream getInputStream() { + return null; + } + + public String getLocalAddr() { + return null; + } + + public String getLocalName() { + return null; + } + + public int getLocalPort() { + return 0; + } + + public Locale getLocale() { + return null; + } + + public Enumeration getLocales() { + return null; + } + + public String getParameter(String name) { + return null; + } + + public Map getParameterMap() { + return null; + } + + public Enumeration getParameterNames() { + return null; + } + + public String[] getParameterValues(String name) { + return null; + } + + public String getProtocol() { + return null; + } + + public BufferedReader getReader() { + return null; + } + + public String getRealPath(String path) { + return null; + } + + public String getRemoteAddr() { + return null; + } + + public String getRemoteHost() { + return null; + } + + public int getRemotePort() { + return 0; + } + + public RequestDispatcher getRequestDispatcher(String path) { + return null; + } + + public String getScheme() { + return scheme; + } + + public String getServerName() { + return host; + } + + public int getServerPort() { + return port; + } + + public boolean isSecure() { + return false; + } + + public String getContextPath() { + return contextPath; + } + + public void removeAttribute(String name) { + } + + public void setAttribute(String name, Object o) { + attrs.put(name, o); + } + + public void setCharacterEncoding(String env) { + } + + public String getAuthType() { + return null; + } + + public Cookie[] getCookies() { + return null; + } + + public long getDateHeader(String name) { + return 0; + } + + public String getHeader(String name) { + return null; + } + + public Enumeration getHeaderNames() { + return null; + } + + public Enumeration getHeaders(String name) { + return null; + } + + public int getIntHeader(String name) { + return 0; + } + + public String getMethod() { + return method; + } + + public String getPathTranslated() { + return null; + } + + public String getQueryString() { + return null; + } + + public String getRemoteUser() { + return null; + } + + public String getRequestURI() { + return null; + } + + public StringBuffer getRequestURL() { + return null; + } + + public String getRequestedSessionId() { + return null; + } + + public String getServletPath() { + return null; + } + + public HttpSession getSession() { + return null; + } + + public HttpSession getSession(boolean create) { + return null; + } + + public Principal getUserPrincipal() { + return null; + } + + public boolean isRequestedSessionIdFromCookie() { + return false; + } + + public boolean isRequestedSessionIdFromURL() { + return false; + } + + public boolean isRequestedSessionIdFromUrl() { + return false; + } + + public boolean isRequestedSessionIdValid() { + return false; + } + + public boolean isUserInRole(String role) { + return false; + } + } +} Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java ------------------------------------------------------------------------------ svn:keywords = author date id revision rev url Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderListTest.java URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderListTest.java?rev=1346403&r1=1346402&r2=1346403&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderListTest.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/SortedProviderListTest.java Tue Jun 5 14:52:39 2012 @@ -19,10 +19,14 @@ package org.apache.sling.resourceresolver.impl.helper; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.NoSuchElementException; import javax.servlet.http.HttpServletRequest; @@ -143,6 +147,31 @@ public class SortedProviderListTest { check(spl, ctx, rp2, rp1, rp4, rp5, rp3); } + @Test public void checkExceptions() { + final AdaptableResourceProviderImpl rp2 = new AdaptableResourceProviderImpl(null, 2L); + + final SortedProviderList spl = new SortedProviderList(Adaptable.class); + spl.add(new ResourceProviderHandler(rp2, rp2.getProperties())); + + final Iterator i = spl.getProviders(null); + assertTrue(i.hasNext()); + i.next(); // one entry + assertFalse(i.hasNext()); + try { + i.remove(); + fail(); + } catch (UnsupportedOperationException uoe) { + // expected + } + try { + i.next(); + fail(); + } catch (NoSuchElementException nsee) { + // expected + } + assertFalse(i.hasNext()); + } + /** * Helper method checking the order of the sorted array. */ Copied: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java (from r1346349, sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/MapEntryTest.java) URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java?p2=sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java&p1=sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/MapEntryTest.java&r1=1346349&r2=1346403&rev=1346403&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/MapEntryTest.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java Tue Jun 5 14:52:39 2012 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.sling.resourceresolver.impl.helper; +package org.apache.sling.resourceresolver.impl.mapping; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Rev Url Copied: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntryTest.java (from r1346349, sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java) URL: http://svn.apache.org/viewvc/sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntryTest.java?p2=sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntryTest.java&p1=sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java&r1=1346349&r2=1346403&rev=1346403&view=diff ============================================================================== --- sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceProviderEntryTest.java (original) +++ sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntryTest.java Tue Jun 5 14:52:39 2012 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.sling.resourceresolver.impl.helper; +package org.apache.sling.resourceresolver.impl.tree; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; Propchange: sling/whiteboard/SLING-2396/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/tree/ResourceProviderEntryTest.java ------------------------------------------------------------------------------ svn:eol-style = native