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 2011/09/17 01:50:44 UTC
svn commit: r1171859 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/services/
main/resources/org/apache/tapestry5/internal/services/
test/java/org/apache/tapestry5/internal/services/
Author: hlship
Date: Fri Sep 16 23:50:43 2011
New Revision: 1171859
URL: http://svn.apache.org/viewvc?rev=1171859&view=rev
Log:
TAP5-1657: Environment should use the UnknownValueException class, for better reporting on the exception page
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java
tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java?rev=1171859&r1=1171858&r2=1171859&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java Fri Sep 16 23:50:43 2011
@@ -14,10 +14,14 @@
package org.apache.tapestry5.internal.services;
+import org.apache.tapestry5.func.F;
+import org.apache.tapestry5.func.Mapper;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import org.apache.tapestry5.ioc.internal.util.OneShotLock;
import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
+import org.apache.tapestry5.ioc.util.AvailableValues;
import org.apache.tapestry5.ioc.util.Stack;
+import org.apache.tapestry5.ioc.util.UnknownValueException;
import org.apache.tapestry5.services.Environment;
import java.util.LinkedList;
@@ -81,7 +85,15 @@ public class EnvironmentImpl implements
types.add(e.getKey());
}
- throw new RuntimeException(ServicesMessages.missingFromEnvironment(type, types));
+ throw new UnknownValueException(String.format("No object of type %s is available from the Environment.", type.getName()),
+ new AvailableValues("Environmentals",
+ F.flow(typeToStack.keySet()).map(new Mapper<Class, String>()
+ {
+ public String map(Class element)
+ {
+ return element.getName();
+ }
+ }).toList()));
}
return result;
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java?rev=1171859&r1=1171858&r2=1171859&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java Fri Sep 16 23:50:43 2011
@@ -16,7 +16,6 @@ package org.apache.tapestry5.internal.se
import javassist.CtClass;
import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl;
import org.apache.tapestry5.internal.structure.Page;
import org.apache.tapestry5.ioc.Location;
import org.apache.tapestry5.ioc.Messages;
@@ -164,16 +163,6 @@ public class ServicesMessages
return MESSAGES.format("mixins-invalid-without-id-or-type", elementName);
}
- public static String missingFromEnvironment(Class type, Collection<Class> availableTypes)
- {
- List<String> types = CollectionFactory.newList();
-
- for (Class c : availableTypes)
- types.add(c.getName());
-
- return MESSAGES.format("missing-from-environment", type.getName(), InternalUtils.joinSorted(types));
- }
-
public static String invalidComponentEventResult(Object result, Collection<Class> configuredResultTypes)
{
List<String> classNames = CollectionFactory.newList();
@@ -186,7 +175,7 @@ public class ServicesMessages
}
public static String undefinedTapestryAttribute(String elementName, String attributeName,
- String allowedAttributeName)
+ String allowedAttributeName)
{
return MESSAGES.format("undefined-tapestry-attribute", elementName, attributeName, allowedAttributeName);
}
@@ -238,7 +227,7 @@ public class ServicesMessages
}
public static String missingValidatorConstraint(String validatorType, Class type, String perFormMessageKey,
- String generalMessageKey)
+ String generalMessageKey)
{
return MESSAGES.format("missing-validator-constraint", validatorType, type.getName(), perFormMessageKey,
generalMessageKey);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties?rev=1171859&r1=1171858&r2=1171859&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties Fri Sep 16 23:50:43 2011
@@ -41,7 +41,6 @@ asset-does-not-exist=Unable to locate as
wrong-asset-digest=The asset digest in the request does not match the actual digest for asset '%s'. This indicates that the content of the asset has changed between requests.
unknown-validator-type=Unknown validator type '%s'. Configured validators are %s.
validator-specification-parse-error=Unexpected character '%s' at position %d of input string: %s
-missing-from-environment=No object of type %s is available from the Environment. Available types are %s.
undefined-tapestry-attribute=Element <%s> does not support an attribute named '%s'. The only allowed attribute name is '%s'.
attribute-not-allowed=Element <%s> does not support any attributes.
parameter-element-name-required=The name attribute of the <parameter> element must be specified.
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java?rev=1171859&r1=1171858&r2=1171859&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java Fri Sep 16 23:50:43 2011
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007 The Apache Software Foundation
+// Copyright 2006, 2007, 2011 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.
@@ -15,6 +15,7 @@
package org.apache.tapestry5.internal.services;
import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.ioc.util.UnknownValueException;
import org.apache.tapestry5.runtime.Component;
import org.apache.tapestry5.services.Environment;
import org.apache.tapestry5.test.TapestryTestCase;
@@ -118,11 +119,11 @@ public class EnvironmentImplTest extends
{
e.peekRequired(List.class);
unreachable();
- } catch (RuntimeException ex)
+ } catch (UnknownValueException ex)
{
assertEquals(
ex.getMessage(),
- "No object of type java.util.List is available from the Environment. Available types are org.apache.tapestry5.ioc.Location, org.apache.tapestry5.runtime.Component.");
+ "No object of type java.util.List is available from the Environment.");
}
verify();