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