velocity-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nbu...@apache.org
Subject svn commit: r736677 - in /velocity/engine/trunk/src: changes/changes.xml java/org/apache/velocity/runtime/parser/node/ASTDirective.java test/org/apache/velocity/test/BlockMacroTestCase.java
Date Thu, 22 Jan 2009 15:39:02 GMT
Author: nbubna
Date: Thu Jan 22 07:39:02 2009
New Revision: 736677

URL: http://svn.apache.org/viewvc?rev=736677&view=rev
Log:
VELOCITY-675 fix NPE from #@foo (thx to Jarkko Viinamaki)

Modified:
    velocity/engine/trunk/src/changes/changes.xml
    velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTDirective.java
    velocity/engine/trunk/src/test/org/apache/velocity/test/BlockMacroTestCase.java

Modified: velocity/engine/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/changes/changes.xml?rev=736677&r1=736676&r2=736677&view=diff
==============================================================================
--- velocity/engine/trunk/src/changes/changes.xml (original)
+++ velocity/engine/trunk/src/changes/changes.xml Thu Jan 22 07:39:02 2009
@@ -27,6 +27,10 @@
   <body>
     <release version="1.7" date="In Subversion">
 
+      <action type="fix" dev="nbubna" issue="VELOCITY-675" due-to="Jarkko Viinamäki">
+        Fix NPE caused by #@foo (w/o #end) in template.
+      </action>
+
       <action type="add" dev="byron" issue="VELOCITY-668" due-to="Jarkko Viinamäki">
 	Minor performance tweaks based on Findbugs findings
       </action>

Modified: velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTDirective.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTDirective.java?rev=736677&r1=736676&r2=736677&view=diff
==============================================================================
--- velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTDirective.java
(original)
+++ velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/node/ASTDirective.java
Thu Jan 22 07:39:02 2009
@@ -127,25 +127,34 @@
             }
             else if( directiveName.startsWith("@") )
             {
-                // block macro call (normal macro call but has AST body)
-                directiveName = directiveName.substring(1);
+                if( this.jjtGetNumChildren() > 0 )
+                {
+                    // block macro call (normal macro call but has AST body)
+                    directiveName = directiveName.substring(1);
 
-                directive = new BlockMacro(directiveName);
-                directive.setLocation(getLine(), getColumn(), getTemplateName());
+                    directive = new BlockMacro(directiveName);
+                    directive.setLocation(getLine(), getColumn(), getTemplateName());
 
-                try
-                {
-                    directive.init( rsvc, context, this );
-                }
-                catch (TemplateInitException die)
-                {
-                    throw new TemplateInitException(die.getMessage(),
+                    try
+                    {
+                        directive.init( rsvc, context, this );
+                    }
+                    catch (TemplateInitException die)
+                    {
+                        throw new TemplateInitException(die.getMessage(),
                             (ParseException) die.getWrappedThrowable(),
                             die.getTemplateName(),
                             die.getColumnNumber() + getColumn(),
                             die.getLineNumber() + getLine());
+                    }
+                    isDirective = true;
+                }
+                else
+                {
+                    // this is a fake block macro call without a body. e.g. #@foo
+                    // just render as it is
+                    isDirective = false;
                 }
-                isDirective = true;
             }
             else
             {

Modified: velocity/engine/trunk/src/test/org/apache/velocity/test/BlockMacroTestCase.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/src/test/org/apache/velocity/test/BlockMacroTestCase.java?rev=736677&r1=736676&r2=736677&view=diff
==============================================================================
--- velocity/engine/trunk/src/test/org/apache/velocity/test/BlockMacroTestCase.java (original)
+++ velocity/engine/trunk/src/test/org/apache/velocity/test/BlockMacroTestCase.java Thu Jan
22 07:39:02 2009
@@ -92,4 +92,9 @@
         assertEvalEquals(result, template);
     }
 
+    public void testVelocity675() throws Exception
+    {
+        assertEvalEquals("#@foo", "#@foo"); 
+    }
+
 }



Mime
View raw message