You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2013/11/04 23:58:42 UTC
git commit: TAP5-1477: Stack assets should return 404 in stead of
exception if they don't exist
Updated Branches:
refs/heads/master c4ecab24f -> cf0485ec6
TAP5-1477: Stack assets should return 404 in stead of exception if they don't exist
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/cf0485ec
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/cf0485ec
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/cf0485ec
Branch: refs/heads/master
Commit: cf0485ec6c59021781a8e4eb7664a33f469e19cd
Parents: c4ecab2
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Mon Nov 4 14:58:34 2013 -0800
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Mon Nov 4 14:58:34 2013 -0800
----------------------------------------------------------------------
.../assets/JavaScriptStackAssembler.java | 4 ++--
.../assets/StackAssetRequestHandler.java | 13 +++++++++++-
.../javascript/JavaScriptStackSourceImpl.java | 17 ++++++++++-----
.../javascript/JavaScriptStackSource.java | 22 +++++++++++++-------
4 files changed, 41 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf0485ec/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssembler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssembler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssembler.java
index d63d71c..aa51c92 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssembler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssembler.java
@@ -29,9 +29,9 @@ import java.io.IOException;
public interface JavaScriptStackAssembler
{
/**
- * Obtains th {@link org.apache.tapestry5.services.javascript.JavaScriptStack} by name, and then
+ * Obtains the {@link org.apache.tapestry5.services.javascript.JavaScriptStack} by name, and then
* uses the {@link org.apache.tapestry5.services.assets.StreamableResourceSource} service to
- * obtain the assets, which are combined togethers.
+ * obtain the assets, which are combined together.
* <p/>
* Expects the {@linkplain org.apache.tapestry5.services.LocalizationSetter#setNonPersistentLocaleFromLocaleName(String) non-persistent locale} to be set before invoking!
*/
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf0485ec/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java
index 614cf73..487fcf1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java
@@ -23,6 +23,7 @@ import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Response;
import org.apache.tapestry5.services.assets.AssetRequestHandler;
import org.apache.tapestry5.services.assets.StreamableResource;
+import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
import org.slf4j.Logger;
import java.io.IOException;
@@ -46,18 +47,21 @@ public class StackAssetRequestHandler implements AssetRequestHandler
private final JavaScriptStackAssembler javaScriptStackAssembler;
+ private final JavaScriptStackSource stackSource;
private final Request request;
public StackAssetRequestHandler(Logger logger, LocalizationSetter localizationSetter,
ResourceStreamer resourceStreamer,
OperationTracker tracker,
- JavaScriptStackAssembler javaScriptStackAssembler, Request request)
+ JavaScriptStackAssembler javaScriptStackAssembler,
+ JavaScriptStackSource stackSource, Request request)
{
this.logger = logger;
this.localizationSetter = localizationSetter;
this.resourceStreamer = resourceStreamer;
this.tracker = tracker;
this.javaScriptStackAssembler = javaScriptStackAssembler;
+ this.stackSource = stackSource;
this.request = request;
}
@@ -88,6 +92,13 @@ public class StackAssetRequestHandler implements AssetRequestHandler
String localeName = matcher.group(2);
final String stackName = matcher.group(3);
+ if (stackSource.findStack(stackName) == null)
+ {
+ logger.warn(String.format("JavaScript stack '%s' not found.", stackName));
+ return false;
+ }
+
+
// Yes, I have a big regret that the JavaScript stack stuff relies on this global, rather than
// having it passed around properly.
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf0485ec/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
index 9c95703..a859a4d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2010 The Apache Software Foundation
+// Copyright 2010-2013 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,15 +14,15 @@
package org.apache.tapestry5.internal.services.javascript;
-import java.util.List;
-import java.util.Map;
-
import org.apache.tapestry5.func.F;
import org.apache.tapestry5.ioc.util.AvailableValues;
import org.apache.tapestry5.ioc.util.UnknownValueException;
import org.apache.tapestry5.services.javascript.JavaScriptStack;
import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
+import java.util.List;
+import java.util.Map;
+
public class JavaScriptStackSourceImpl implements JavaScriptStackSource
{
private final Map<String, JavaScriptStack> configuration;
@@ -34,15 +34,22 @@ public class JavaScriptStackSourceImpl implements JavaScriptStackSource
public JavaScriptStack getStack(String name)
{
- JavaScriptStack stack = configuration.get(name);
+ JavaScriptStack stack = findStack(name);
if (stack == null)
+ {
throw new UnknownValueException(String.format("No JavaScriptStack with name '%s'.", name),
new AvailableValues("Configured JavaScript stacks", configuration));
+ }
return stack;
}
+ public JavaScriptStack findStack(String name)
+ {
+ return configuration.get(name);
+ }
+
public List<String> getStackNames()
{
return F.flow(configuration.keySet()).sort().toList();
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cf0485ec/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
index 54157de..f0b0684 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
@@ -1,4 +1,4 @@
-// Copyright 2010 The Apache Software Foundation
+// Copyright 2010-2013 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,14 +14,14 @@
package org.apache.tapestry5.services.javascript;
-import java.util.List;
-
import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
import org.apache.tapestry5.ioc.util.UnknownValueException;
+import java.util.List;
+
/**
* Manages the available {@link JavaScriptStack}s, each of which has a unique name.
- *
+ *
* @since 5.2.0
*/
@UsesMappedConfiguration(JavaScriptStack.class)
@@ -29,16 +29,24 @@ public interface JavaScriptStackSource
{
/**
* Gets a stack by name (ignoring case).
- *
+ *
* @return named stack
* @throws UnknownValueException
- * if no such stack
+ * if no such stack
*/
JavaScriptStack getStack(String name);
/**
+ * Gets a stack by name (ignoring case).
+ *
+ * @return named stack, or null if not found
+ * @since 5.4
+ */
+ JavaScriptStack findStack(String name);
+
+ /**
* Returns the names of all stacks, in sorted order.
- *
+ *
* @since 5.2.1
*/
List<String> getStackNames();