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();