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 2005/02/05 06:38:05 UTC
svn commit: r151478 - in
jakarta/velocity/trunk/src/java/org/apache/velocity: context/
runtime/directive/ runtime/parser/node/ test/
Author: wglass
Date: Fri Feb 4 21:37:59 2005
New Revision: 151478
URL: http://svn.apache.org/viewcvs?view=rev&rev=151478
Log:
throw MethodInvocationException even when a parameter to a macro. Thanks to Mike Rettig for the fix. http://issues.apache.org/bugzilla/show_bug.cgi?id=30220.
Modified:
jakarta/velocity/trunk/src/java/org/apache/velocity/context/AbstractContext.java
jakarta/velocity/trunk/src/java/org/apache/velocity/context/Context.java
jakarta/velocity/trunk/src/java/org/apache/velocity/context/InternalContextAdapterImpl.java
jakarta/velocity/trunk/src/java/org/apache/velocity/context/VMContext.java
jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java
jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java
jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java
jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/NodeUtils.java
jakarta/velocity/trunk/src/java/org/apache/velocity/test/MethodInvocationExceptionTest.java
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/context/AbstractContext.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/context/AbstractContext.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/context/AbstractContext.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/context/AbstractContext.java Fri Feb 4 21:37:59 2005
@@ -20,6 +20,7 @@
import org.apache.velocity.context.Context;
import org.apache.velocity.context.InternalContextBase;
+import org.apache.velocity.exception.MethodInvocationException;
/**
* This class is the abstract base class for all conventional
@@ -47,7 +48,7 @@
* @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
* @author <a href="mailto:fedor.karpelevitch@home.com">Fedor Karpelevitch</a>
* @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
- * @version $Id: AbstractContext.java,v 1.10 2004/03/19 17:13:33 dlr Exp $
+ * @version $Id$
*/
public abstract class AbstractContext extends InternalContextBase
@@ -181,7 +182,7 @@
* @return The value corresponding to the provided key or null if
* the key param is null.
*/
- public Object get(String key)
+ public Object get(String key) throws MethodInvocationException
{
/*
* punt if key is null
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/context/Context.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/context/Context.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/context/Context.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/context/Context.java Fri Feb 4 21:37:59 2005
@@ -1,5 +1,7 @@
package org.apache.velocity.context;
+import org.apache.velocity.exception.MethodInvocationException;
+
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
@@ -30,7 +32,7 @@
*
* @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
* @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
- * @version $Id: Context.java,v 1.7 2004/03/19 17:13:33 dlr Exp $
+ * @version $Id$
*/
public interface Context
{
@@ -47,8 +49,9 @@
*
* @param key The name of the desired value.
* @return The value corresponding to the provided key.
+ * @throws MethodInvocationException
*/
- Object get(String key);
+ Object get(String key) throws MethodInvocationException;
/**
* Indicates whether the specified key is in the context.
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/context/InternalContextAdapterImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/context/InternalContextAdapterImpl.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/context/InternalContextAdapterImpl.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/context/InternalContextAdapterImpl.java Fri Feb 4 21:37:59 2005
@@ -19,6 +19,7 @@
import org.apache.velocity.util.introspection.IntrospectionCacheData;
import org.apache.velocity.app.event.EventCartridge;
+import org.apache.velocity.exception.MethodInvocationException;
import org.apache.velocity.runtime.resource.Resource;
@@ -168,7 +169,7 @@
return context.put( key , value );
}
- public Object get(String key)
+ public Object get(String key) throws MethodInvocationException
{
return context.get( key );
}
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/context/VMContext.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/context/VMContext.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/context/VMContext.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/context/VMContext.java Fri Feb 4 21:37:59 2005
@@ -24,6 +24,7 @@
import org.apache.velocity.util.introspection.IntrospectionCacheData;
import org.apache.velocity.runtime.resource.Resource;
import org.apache.velocity.app.event.EventCartridge;
+import org.apache.velocity.exception.MethodInvocationException;
/**
* This is a special, internal-use-only context implementation to be
@@ -89,7 +90,7 @@
* state
* @param vmpa VMProxyArg to add
*/
- public void addVMProxyArg( VMProxyArg vmpa )
+ public void addVMProxyArg( VMProxyArg vmpa ) throws MethodInvocationException
{
/*
* ask if it's a constant : if so, get the value and put into the
@@ -166,7 +167,7 @@
* @param key name of item to get
* @return stored object or null
*/
- public Object get( String key )
+ public Object get( String key ) throws MethodInvocationException
{
/*
* first, see if it's a VMPA
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/Foreach.java Fri Feb 4 21:37:59 2005
@@ -79,7 +79,7 @@
* 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)
*/
- public Object get( String key )
+ public Object get( String key ) throws MethodInvocationException
{
return ( active && loopVariableKey.equals(key) )
? null
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/directive/VMProxyArg.java Fri Feb 4 21:37:59 2005
@@ -73,7 +73,7 @@
* into a local context.
*
* @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
- * @version $Id: VMProxyArg.java,v 1.17 2004/03/20 03:35:50 dlr Exp $
+ * @version $Id$
*/
public class VMProxyArg
{
@@ -239,7 +239,7 @@
* @return Object value
*
*/
- public Object getObject( InternalContextAdapter context )
+ public Object getObject( InternalContextAdapter context ) throws MethodInvocationException
{
try
{
@@ -341,7 +341,7 @@
rsvc.error("VMProxyArg.getObject() : method invocation error getting value : " + mie );
- return null;
+ throw mie;
}
}
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java Fri Feb 4 21:37:59 2005
@@ -634,7 +634,7 @@
}
- public Object getVariableValue(Context context, String variable)
+ public Object getVariableValue(Context context, String variable) throws MethodInvocationException
{
return context.get(variable);
}
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/NodeUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/NodeUtils.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/NodeUtils.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/runtime/parser/node/NodeUtils.java Fri Feb 4 21:37:59 2005
@@ -16,6 +16,7 @@
*/
import org.apache.velocity.context.Context;
+import org.apache.velocity.exception.MethodInvocationException;
import org.apache.velocity.runtime.parser.*;
/**
@@ -23,7 +24,7 @@
*
* @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
* @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
- * @version $Id: NodeUtils.java,v 1.18 2004/03/19 17:13:36 dlr Exp $
+ * @version $Id$
*/
public class NodeUtils
{
@@ -143,7 +144,7 @@
* be transformed into "candy.jpg" before
* the method is executed.
*/
- public static String interpolate(String argStr, Context vars)
+ public static String interpolate(String argStr, Context vars) throws MethodInvocationException
{
StringBuffer argBuf = new StringBuffer();
Modified: jakarta/velocity/trunk/src/java/org/apache/velocity/test/MethodInvocationExceptionTest.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/trunk/src/java/org/apache/velocity/test/MethodInvocationExceptionTest.java?view=diff&r1=151477&r2=151478
==============================================================================
--- jakarta/velocity/trunk/src/java/org/apache/velocity/test/MethodInvocationExceptionTest.java (original)
+++ jakarta/velocity/trunk/src/java/org/apache/velocity/test/MethodInvocationExceptionTest.java Fri Feb 4 21:37:59 2005
@@ -18,19 +18,17 @@
import java.io.StringWriter;
-import org.apache.velocity.app.Velocity;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.runtime.log.LogSystem;
+import junit.framework.TestCase;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.MethodInvocationException;
-import junit.framework.TestCase;
-
/**
* Tests if we can hand Velocity an arbitrary class for logging.
*
* @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
- * @version $Id: MethodInvocationExceptionTest.java,v 1.8 2004/03/19 17:13:38 dlr Exp $
+ * @version $Id$
*/
public class MethodInvocationExceptionTest extends TestCase
{
@@ -185,6 +183,37 @@
{
fail("Wrong exception thrown, set test");
}
+
+ /**
+ * test that exception is thrown when in parameter to macro
+ */
+ template = "#macro (macro1 $param) $param #end #macro1($woogie.getFoo())";
+
+ try
+ {
+ Velocity. evaluate( vc, w, "test", template );
+ fail("No exception thrown, set test.");
+ }
+ catch( MethodInvocationException mie )
+ {
+ 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");
+ }
+
+
}
public void doException()
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org