You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:21:24 UTC

[sling-org-apache-sling-testing-sling-mock] 15/26: SLING-4086 SlingHttpServlerRequest should support getResourceBundle() methods

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.testing.sling-mock-1.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git

commit 9442dd81f20d5585f49408f0786c1a8aabfdb737
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Tue Oct 21 20:09:55 2014 +0000

    SLING-4086 SlingHttpServlerRequest should support getResourceBundle() methods
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1633444 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            |  8 +++-
 .../mock/sling/context/SlingContextImpl.java       |  2 +-
 .../sling/servlet/MockSlingHttpServletRequest.java | 56 +++++++++++++++++-----
 .../servlet/MockSlingHttpServletRequestTest.java   | 39 ++++++++++++++-
 4 files changed, 90 insertions(+), 15 deletions(-)

diff --git a/pom.xml b/pom.xml
index e50cd17..faea81d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -132,7 +132,13 @@
             <version>1.2.2</version>
             <scope>compile</scope>
         </dependency>
-    
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.i18n</artifactId>
+            <version>2.2.4</version>
+            <scope>compile</scope>
+        </dependency>
+
         <dependency>
             <groupId>commons-collections</groupId>
             <artifactId>commons-collections</artifactId>
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
index 907f804..65076aa 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
@@ -215,7 +215,7 @@ public class SlingContextImpl {
      */
     public final MockSlingHttpServletRequest request() {
         if (this.request == null) {
-            this.request = new MockSlingHttpServletRequest(this.resourceResolver());
+            this.request = new MockSlingHttpServletRequest(this.resourceResolver(), this.bundleContext());
 
             // initialize sling bindings
             SlingBindings bindings = new SlingBindings();
diff --git a/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java b/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java
index 4444945..eaad0bf 100644
--- a/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java
+++ b/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequest.java
@@ -29,6 +29,7 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.ListResourceBundle;
 import java.util.Locale;
 import java.util.Map;
 import java.util.ResourceBundle;
@@ -59,14 +60,19 @@ import org.apache.sling.api.request.RequestProgressTracker;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.servlets.HttpConstants;
+import org.apache.sling.i18n.ResourceBundleProvider;
+import org.apache.sling.testing.mock.osgi.MockOsgi;
 import org.apache.sling.testing.mock.sling.MockSling;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 
 /**
  * Mock {@link SlingHttpServletRequest} implementation.
  */
 public class MockSlingHttpServletRequest extends SlingAdaptable implements SlingHttpServletRequest {
 
-    private ResourceResolver resourceResolver;
+    private final ResourceResolver resourceResolver;
+    private final BundleContext bundleContext;
     private RequestPathInfo requestPathInfo = new MockRequestPathInfo();
     private Map<String, Object> attributeMap = new HashMap<String, Object>();
     private Map<String, String[]> parameterMap = new LinkedHashMap<String, String[]>();
@@ -80,19 +86,34 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling
     private String method = HttpConstants.METHOD_GET;
     private final HeaderSupport headerSupport = new HeaderSupport();
     private final CookieSupport cookieSupport = new CookieSupport();
+    
+    private static final ResourceBundle EMPTY_RESOURCE_BUNDLE = new ListResourceBundle() {
+        @Override
+        protected Object[][] getContents() {
+            return new Object[0][0];
+        }
+    };
 
     /**
      * Instantiate with default resource resolver
      */
     public MockSlingHttpServletRequest() {
-        this.resourceResolver = MockSling.newResourceResolver();
+        this(MockSling.newResourceResolver());
     }
 
     /**
      * @param resourceResolver Resource resolver
      */
     public MockSlingHttpServletRequest(ResourceResolver resourceResolver) {
+        this(resourceResolver, MockOsgi.newBundleContext());
+    }
+
+    /**
+     * @param resourceResolver Resource resolver
+     */
+    public MockSlingHttpServletRequest(ResourceResolver resourceResolver, BundleContext bundleContext) {
         this.resourceResolver = resourceResolver;
+        this.bundleContext = bundleContext;
     }
 
     @Override
@@ -421,6 +442,27 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling
         cookieSupport.addCookie(cookie);
     }
 
+    @Override
+    public ResourceBundle getResourceBundle(Locale locale) {
+        return getResourceBundle(null, locale);
+    }
+
+    @Override
+    public ResourceBundle getResourceBundle(String baseName, Locale locale) {
+        // check of ResourceBundleProvider is registered in mock OSGI context
+        ResourceBundle resourceBundle = null;
+        ServiceReference serviceReference = bundleContext.getServiceReference(ResourceBundleProvider.class.getName());
+        if (serviceReference != null) {
+            ResourceBundleProvider provider = (ResourceBundleProvider)bundleContext.getService(serviceReference);
+            resourceBundle = provider.getResourceBundle(baseName, locale);
+        }       
+        // if no ResourceBundleProvider exists return empty bundle
+        if (resourceBundle == null) {
+            resourceBundle = EMPTY_RESOURCE_BUNDLE;
+        }
+        return resourceBundle;
+    }
+    
     // --- unsupported operations ---
 
     @Override
@@ -459,16 +501,6 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling
     }
 
     @Override
-    public ResourceBundle getResourceBundle(Locale pLocale) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ResourceBundle getResourceBundle(String baseName, Locale locale) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
     public String getResponseContentType() {
         throw new UnsupportedOperationException();
     }
diff --git a/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java b/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java
index 7539d09..8c868b7 100644
--- a/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/sling/servlet/MockSlingHttpServletRequestTest.java
@@ -25,14 +25,18 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.util.Calendar;
 import java.util.Enumeration;
 import java.util.LinkedHashMap;
+import java.util.ListResourceBundle;
 import java.util.Locale;
 import java.util.Map;
+import java.util.ResourceBundle;
 
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpSession;
@@ -41,11 +45,14 @@ import org.apache.commons.lang3.CharEncoding;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.servlets.HttpConstants;
+import org.apache.sling.i18n.ResourceBundleProvider;
+import org.apache.sling.testing.mock.osgi.MockOsgi;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
+import org.osgi.framework.BundleContext;
 
 @RunWith(MockitoJUnitRunner.class)
 public class MockSlingHttpServletRequestTest {
@@ -54,12 +61,13 @@ public class MockSlingHttpServletRequestTest {
     private ResourceResolver resourceResolver;
     @Mock
     private Resource resource;
+    private BundleContext bundleContext = MockOsgi.newBundleContext();
 
     private MockSlingHttpServletRequest request;
 
     @Before
     public void setUp() throws Exception {
-        request = new MockSlingHttpServletRequest(resourceResolver);
+        request = new MockSlingHttpServletRequest(resourceResolver, bundleContext);
     }
 
     @Test
@@ -212,5 +220,34 @@ public class MockSlingHttpServletRequestTest {
         assertEquals("value1", cookies[0].getValue());
         assertEquals("value2", cookies[1].getValue());
     }
+    
+    @Test
+    public void testDefaultResourceBundle() {
+        ResourceBundle bundle = request.getResourceBundle(Locale.US);
+        assertNotNull(bundle);
+        assertFalse(bundle.getKeys().hasMoreElements());
+    }
+
+    @Test
+    public void testResourceBundleFromProvider() {
+        ResourceBundleProvider provider = mock(ResourceBundleProvider.class);
+        bundleContext.registerService(ResourceBundleProvider.class.getName(), provider, null);
+        when(provider.getResourceBundle("base1", Locale.US)).thenReturn(new ListResourceBundle() {
+            @Override
+            protected Object[][] getContents() {
+                return new Object[][] {
+                        { "key1", "value1" }
+                };
+            }
+        });        
+        
+        ResourceBundle bundle = request.getResourceBundle("base1", Locale.US);
+        assertNotNull(bundle);
+        assertEquals("value1", bundle.getString("key1"));
+
+        ResourceBundle bundle2 = request.getResourceBundle("base2", Locale.US);
+        assertNotNull(bundle2);
+        assertFalse(bundle2.getKeys().hasMoreElements());
+    }
 
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.