You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by wg...@apache.org on 2006/11/10 16:19:10 UTC
svn commit: r473363 - in /jakarta/velocity/engine/trunk/src:
java/org/apache/velocity/runtime/directive/Foreach.java
java/org/apache/velocity/runtime/directive/VMProxyArg.java
test/org/apache/velocity/test/MethodInvocationExceptionTestCase.java
Author: wglass
Date: Fri Nov 10 07:19:09 2006
New Revision: 473363
URL: http://svn.apache.org/viewvc?view=rev&rev=473363
Log:
throw methodinvcationexception from velocimacros. VELOCITY-284.
Modified:
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java
jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/MethodInvocationExceptionTestCase.java
Modified: jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java?view=diff&rev=473363&r1=473362&r2=473363
==============================================================================
--- jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java (original)
+++ jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java Fri Nov 10 07:19:09 2006
@@ -76,8 +76,9 @@
/**
* Get an object from the context, or null if the key is equal to the loop variable
* @see org.apache.velocity.context.InternalContextAdapter#get(java.lang.String)
+ * @exception MethodInvocationException passes on potential exception from reference method call
*/
- public Object get( String key )
+ public Object get( String key ) throws MethodInvocationException
{
return ( active && loopVariableKey.equals(key) )
? null
@@ -98,8 +99,14 @@
}
/**
+ * Allows callers to explicitly put objects in the local context.
+ * Objects added to the context through this method always end up
+ * in the top-level context of possible wrapped contexts.
+ *
+ * @param key name of item to set.
+ * @param value object to set to key.
* @see InternalWrapperContext#localPut(String, Object)
- */
+ */
public Object localPut(final String key, final Object value)
{
return put(key, value);
Modified: jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java?view=diff&rev=473363&r1=473362&r2=473363
==============================================================================
--- jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java (original)
+++ jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java Fri Nov 10 07:19:09 2006
@@ -242,9 +242,9 @@
*
* @param context Context to use for getting current value
* @return Object value
- *
+ * @exception MethodInvocationException passes on potential exception from reference method call
*/
- public Object getObject( InternalContextAdapter context )
+ public Object getObject( InternalContextAdapter context ) throws MethodInvocationException
{
try
{
@@ -358,8 +358,7 @@
*/
log.error("VMProxyArg.getObject() : method invocation error getting value", mie);
-
- return null;
+ throw mie;
}
}
Modified: jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/MethodInvocationExceptionTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/MethodInvocationExceptionTestCase.java?view=diff&rev=473363&r1=473362&r2=473363
==============================================================================
--- jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/MethodInvocationExceptionTestCase.java (original)
+++ jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/MethodInvocationExceptionTestCase.java Fri Nov 10 07:19:09 2006
@@ -39,6 +39,7 @@
{
/**
* Default constructor.
+ * @param name
*/
public MethodInvocationExceptionTestCase(String name)
{
@@ -65,6 +66,7 @@
* uses the Velocity class to eval a string
* which accesses a method that throws an
* exception.
+ * @throws Exception
*/
public void testNormalMethodInvocationException ()
throws Exception
@@ -203,6 +205,7 @@
* test that no exception is thrown when in parameter to macro.
* This is the way we expect the system to work, but it would be better
* to throw an exception.
+ * @throws Exception
*/
public void testMacroInvocationException ()
throws Exception
@@ -217,10 +220,25 @@
try
{
Velocity. evaluate( vc, w, "test", template );
+ fail("No exception thrown, macro invocation test.");
}
catch( MethodInvocationException mie )
{
- fail("Shouldn't have thrown exception, macro param test.");
+ System.out.println("Caught MIE (good!) :" );
+ System.out.println(" reference = " + mie.getReferenceName() );
+ System.out.println(" method = " + mie.getMethodName() );
+
+ Throwable t = mie.getWrappedThrowable();
+ System.out.println(" throwable = " + t );
+
+ if( t instanceof Exception)
+ {
+ System.out.println(" exception = " + ( (Exception) t).getMessage() );
+ }
+ }
+ catch( Exception e)
+ {
+ fail("Wrong exception thrown, test of exception within macro parameter");
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org