You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mo...@apache.org on 2015/11/29 17:05:30 UTC

[04/33] wicket git commit: WICKET-6031 NPE in PackageResourceReference#getResource() when there is no request

WICKET-6031 NPE in PackageResourceReference#getResource() when there is no request


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e4399d74
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e4399d74
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e4399d74

Branch: refs/heads/lambdas
Commit: e4399d74234b657435f44eb137969db1a22896d5
Parents: 490fdf6
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat Nov 14 10:58:55 2015 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sat Nov 14 10:59:19 2015 +0100

----------------------------------------------------------------------
 .../resource/PackageResourceReference.java      | 34 +++++++++++++++-----
 .../resource/PackageResourceReferenceTest.java  | 19 +++++++++++
 2 files changed, 45 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/e4399d74/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
index 40d7d0c..f10a01c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
@@ -111,10 +111,16 @@ public class PackageResourceReference extends ResourceReference
 		final String extension = getExtension();
 
 		final PackageResource resource;
-		
-		final Url url = RequestCycle.get().getRequest().getUrl();
-		//resource attributes (locale, style, variation) might be encoded in the URL
-		final UrlAttributes urlAttributes = ResourceUtil.decodeResourceReferenceAttributes(url);
+
+		RequestCycle requestCycle = RequestCycle.get();
+		UrlAttributes urlAttributes = null;
+		if (requestCycle != null)
+		{
+			//resource attributes (locale, style, variation) might be encoded in the URL
+			final Url url = requestCycle.getRequest().getUrl();
+			urlAttributes = ResourceUtil.decodeResourceReferenceAttributes(url);
+		}
+
 		final String currentVariation = getCurrentVariation(urlAttributes);
 		final String currentStyle = getCurrentStyle(urlAttributes);
 		final Locale currentLocale = getCurrentLocale(urlAttributes);
@@ -185,7 +191,11 @@ public class PackageResourceReference extends ResourceReference
 	{
 		Locale currentLocale = getCurrentLocale();
 
-		return currentLocale != null ? currentLocale : attributes.getLocale();
+		return currentLocale != null
+				? currentLocale
+				: attributes != null
+					? attributes.getLocale()
+					: null;
 	}
 
 	private Locale getCurrentLocale()
@@ -208,8 +218,12 @@ public class PackageResourceReference extends ResourceReference
 	private String getCurrentStyle(UrlAttributes attributes)
 	{
 		String currentStyle = getCurrentStyle();
-		
-		return currentStyle != null ? currentStyle : attributes.getStyle();
+
+		return currentStyle != null
+				? currentStyle
+				: attributes != null
+					? attributes.getStyle()
+					: null;
 	}
 	
 	private String getCurrentStyle()
@@ -233,7 +247,11 @@ public class PackageResourceReference extends ResourceReference
 	{
 		final String variation = getVariation();
 
-		return variation != null ? variation : attributes.getVariation();
+		return variation != null
+				? variation
+				: attributes != null
+					? attributes.getVariation()
+					: null;
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/e4399d74/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java
index df70f16..de7a0a5 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/PackageResourceReferenceTest.java
@@ -21,6 +21,7 @@ import java.io.InputStream;
 import java.util.Locale;
 
 import org.apache.wicket.Application;
+import org.apache.wicket.ThreadContext;
 import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
 import org.apache.wicket.protocol.http.mock.MockHttpServletResponse;
 import org.apache.wicket.request.Request;
@@ -355,5 +356,23 @@ public class PackageResourceReferenceTest extends WicketTestCase
 			new String(mockHttpServletResponse.getBinaryContent()));
 	}
 
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-6031
+	 */
+	@Test
+	public void noRequestCycle()
+	{
+		ThreadContext.setRequestCycle(null);
+
+		PackageResourceReference reference = new PackageResourceReference(scope, "resource.txt",
+				locales[1], styles[1], variations[1]);
+
+		PackageResource resource = reference.getResource();
+		assertNotNull(resource);
+
+		assertEquals(locales[1], resource.getResourceStream().getLocale());
+		assertEquals(styles[1], resource.getResourceStream().getStyle());
+		assertEquals(variations[1], resource.getResourceStream().getVariation());
+	}
 
 }