Issue Details (XML | Word | Printable)

Key: VELOCITY-71
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Unassigned
Reporter: Daniel Rall
Votes: 1
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Velocity

False positive error condition parsing VM_global_library.vm

Created: 02/May/02 06:24 AM   Updated: 08/Mar/07 12:04 AM
Return to search
Component/s: Engine
Affects Version/s: 1.3-rc1
Fix Version/s: 1.5

Time Tracking:
Not Specified

Environment:
Operating System: Linux
Platform: Other
Issue Links:
Duplicate
 

Bugzilla Id: 8716
Resolution Date: 10/Oct/06 10:53 PM


 Description  « Hide
This bug is actually against 1.3 RC1, but there is no Version listing for that
in the Bugzilla config.

The initial parsing of the global Velocimacro library is incorrectly indicating
an error when context variables which are not passed in as arguments to a macro
are used when calling one macro within the body of another. Confusing, eh? I
assume that this could be worked around by putting double quotes around the
supposedly non-existent arguments to the invoked macro, but was wondering if
this was a bug. Included is a sample problem case and some log output.

From VM_global_library.vm:

#macro(linkedLoginName $acl $user)
 #linkIf($user.isEditableBy($acl) $currentDomain.getProjectPageURL("UserEdit",
"userID=$user.getID()") $user.getLoginName())
#end

#macro(linkIf $condition $link $text)
 #if ($condition) <a href="$link">$text</a> #else $text #end
#end

From velocity.log:

2002-05-01 15:04:28,496 - Velocimacro : added new VM : #enterHelp( filename
linktext ) : source = VM_global_library.vm
2002-05-01 15:04:28,843 - VM #linkIf: error : too few arguments to macro. Wanted
3 got 0
2002-05-01 15:04:28,847 - VM #servletLink: error : too few arguments to macro.
Wanted 2 got 0
2002-05-01 15:04:28,848 - VM #servletLink: error : too few arguments to macro.
Wanted 2 got 0
2002-05-01 15:04:28,849 - VM #servletLink: error : too few arguments to macro.
Wanted 2 got 0
2002-05-01 15:04:28,857 - VM #displayProjectTreeAsOptions: error : too few
arguments to macro. Wanted 4 got 0
2002-05-01 15:04:28,907 - VM #selectYear: error : too few arguments to macro.
Wanted 2 got 0
2002-05-01 15:04:28,907 - VM #selectMonth: error : too few arguments to macro.
Wanted 1 got 0
2002-05-01 15:04:28,908 - VM #selectDay: error : too few arguments to macro.
Wanted 1 got 0
2002-05-01 15:04:29,109 - ResourceManager : found VM_global_library.vm with
loader org.apache.velocity.runtime.resource.loader.FileResourceLoader
2002-05-01 15:04:29,113 - Velocimacro : VM library template macro registration
complete.
2002-05-01 15:04:29,113 - Velocimacro : allowInline = true : VMs can be defined
inline in templates

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Repository Revision Date User Message
ASF #462537 Tue Oct 10 20:03:29 UTC 2006 henning Factor out the logging and prefixing, cleaning up the code for the
Factory. Starting to work on VELOCITY-71...
Files Changed
MODIFY /jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/VelocimacroFactory.java

Repository Revision Date User Message
ASF #462627 Tue Oct 10 22:53:30 UTC 2006 henning Check whether the current macro test is not actually a macro invocation
but a reference inside another macro definition. If yes, do not report
an error about the size of the argument list but fail silently.
Fixes VELOCITY-71.
Files Changed
MODIFY /jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/VelocimacroProxy.java

Repository Revision Date User Message
ASF #462993 Wed Oct 11 22:07:24 UTC 2006 henning Add a test case for the bug fixed in VELOCITY-71.
Files Changed
ADD /jakarta/velocity/engine/trunk/test/macroforwarddefine/velocity.properties
ADD /jakarta/velocity/engine/trunk/test/macroforwarddefine/compare/velocity.log.cmp
ADD /jakarta/velocity/engine/trunk/test/macroforwarddefine/compare
ADD /jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/MacroForwardDefineTestCase.java
ADD /jakarta/velocity/engine/trunk/test/macroforwarddefine/macros.vm
ADD /jakarta/velocity/engine/trunk/test/macroforwarddefine

Repository Revision Date User Message
ASF #733439 Sun Jan 11 09:47:48 UTC 2009 byron VELOCITY-71 can't happen anymore with Velocity 1.6 since macro arg checking is done during render, so remove the check
Files Changed
MODIFY /velocity/engine/trunk/src/java/org/apache/velocity/runtime/directive/VelocimacroProxy.java