Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-912

Hyphen Handling in Identifiers that are inside java collection

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.1
    • Fix Version/s: 2.2
    • Component/s: Engine
    • Labels:
      None

      Description

      I have this template:

      hello-world.properties.vm 
       ---------------------------------------------------------- 
       Slash: ${sample-slash}
       Slash in a Map: ${map.sample-slash}

      ----------------------------------------------------------
      And I have this sample test case:

       

      public class ApacheVelocityTest {
      private final String RESOURCES_DIR = "src/test/resources";
      
      @Test
      public void testVelocity() {
      Path templatePath = Paths.get(RESOURCES_DIR, "templates", "hello-world.properties.vm");
      
      
      VelocityEngine ve = new VelocityEngine();
      ve.setProperty(Velocity.PARSER_HYPHEN_ALLOWED, true);
      
      ve.init();
      Template t = ve.getTemplate(templatePath.toString());
      
      VelocityContext context = new VelocityContext();
      
      context.put("sample-slash", "SLASH");
      
      Map<String, String> sampleData = createData();
      context.put("map", sampleData);
      
      StringWriter writer = new StringWriter();
      t.merge(context, writer);
      
      System.out.println(writer.toString());
      }
      
      public Map<String, String> createData() {
      Map<String, String> mapData = new HashMap<String, String>();
      
      mapData.put("sample-slash", "USER1");
      
      return mapData;
      
      }
      }
      

       

      Now, the first "sample-slash" is rendered correctly but the one that is in the config map is not..it is throwing out an error like this:

      ---------------------------------------------------------------------

      org.apache.velocity.exception.ParseErrorException: Encountered "-slash}" at src\test\resources\templates\hello-world.properties.vm[line 5, column 22]
       Was expecting one of:
       "[" ...
       "|" ...
       "}" ...
       "}" ...
      at org.apache.velocity.Template.process(Template.java:154)
      

       

      The parser exception is being thrown by the object that is embedded into the java map.

      Do I have any workaround for this developers? Any pointers are greatly appreciated.

        Attachments

          Activity

            People

            • Assignee:
              claude Claude Brisson
              Reporter:
              mark.estrada Mark Estrada
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: