Muskaan12 created VELOCITY-988:
----------------------------------

             Summary: Regression Bug in Velocity Library: JSON if Condition 
with {} Failing in v2.3 and Later
                 Key: VELOCITY-988
                 URL: https://issues.apache.org/jira/browse/VELOCITY-988
             Project: Velocity
          Issue Type: Bug
          Components: Engine
    Affects Versions: 2.4.1, 2.4, 2.3
            Reporter: Muskaan12


I have identified a regression bug in the Velocity library that affects the 
handling of {{if}} conditions within JSON documents when curly braces 
({{{{}}{}{{}}}}) are present. This issue is identified in version 2.3 and 
present in later  versions as well, but was working as expected in  version 1.7.

To help reproduce the issue, I have provided a sample code along with the stack 
trace in the following 

 
{code:java}
 public static void main(String[] args) {
// Initialize the VelocityEngine
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
// Define the template with a basic and simple if condition
String template = "{\n" +
" #if($!{$SubjectData.StudyEventData['@StudyEventRepeatKey']})\n" +
" \"eventRepeatKey\": 
\"$SubjectData.StudyEventData['@StudyEventRepeatKey']\",\n" +
" #end\n" +
" \"otherField\": \"someValue\"\n" +
"}";
// Create VelocityContext and add data
VelocityContext context = new VelocityContext();
context.put("SubjectData", Map.of("StudyEventData", 
Map.of("@StudyEventRepeatKey", "123")));
// Render the template
StringWriter writer = new StringWriter();
velocityEngine.evaluate(context, writer, "Template", template);
// Print the rendered JSON
System.out.println(writer.toString());
}{code}
 

*Stacktrace:*

*=============*

*Exception in thread "main" org.apache.velocity.excep*

*Exception in thread "main" org.apache.velocity.exception.ParseErrorException: 
Encountered ")\n" at Template[line 2, column 64]*
*Was expecting one of:*
    *"||" ...*
    *")" ...*
    *<WHITESPACE> ...*
    *<NEWLINE> ...*
    *"-" ...*
    *"+" ...*
    {*}"{*}" ...*
    *"/" ...*
    *"%" ...*
    *<LOGICAL_AND> ...*
    *<LOGICAL_OR> ...*
    *<LOGICAL_LT> ...*
    *<LOGICAL_LE> ...*
    *<LOGICAL_GT> ...*
    *<LOGICAL_GE> ...*
    *<LOGICAL_EQUALS> ...*
    *<LOGICAL_NOT_EQUALS> ...*
   **   
*at 
org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1440)*
*at 
org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1398)*
*at org.apache.velocity.app.VelocityEngine.evaluate(VelocityEngine.java:213)*
*at org.example.VelocityExample.main(VelocityExample.java:28)*

*tion.ParseErrorException: Encountered ")\n" at Template[line 2, column 64]*
*Was expecting one of:*
    *"||" ...*
    *")" ...*
    *<WHITESPACE> ...*
    *<NEWLINE> ...*
    *"-" ...*
    *"+" ...*
    {*}"{*}" ...*
    *"/" ...*
    *"%" ...*
    *<LOGICAL_AND> ...*
    *<LOGICAL_OR> ...*
    *<LOGICAL_LT> ...*
    *<LOGICAL_LE> ...*
    *<LOGICAL_GT> ...*
    *<LOGICAL_GE> ...*
    *<LOGICAL_EQUALS> ...*
    *<LOGICAL_NOT_EQUALS> ...*
   **   
*at 
org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1440)*
*at 
org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1398)*
*at org.apache.velocity.app.VelocityEngine.evaluate(VelocityEngine.java:213)*
*at org.example.VelocityExample.main(VelocityExample.java:28)*



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org

Reply via email to