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>.