Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-6247

Property expression doesn't support '[', ']' and '.' characters inside square brackets

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 8.0.0-M1, 7.4.0, 6.24.0
    • None
    • wicket
    • None

    Description

      A property expression having a '[' character inside squar brackets like "bean.map[code[foo]" will fail because PropertyResolver replaces all '[' charaters by '.['

      example:

      PropertyResolverTest.java
      	@Test
      	public void shouldAllowMapKeysWithSpecialCharacters() throws Exception
      	{
      		String code = "[!@#$%^&*()_+-=[{}|]";
      		String expression = "[" + code + "]";
      		Map<String, Integer> integerMap = new HashMap<String, Integer>();
      		PropertyResolver.setValue(expression, integerMap, AN_INTEGER, CONVERTER);
      		assertThat(PropertyResolver.getValue(expression, integerMap), is(AN_INTEGER));
      		assertThat(integerMap.get(code), is(AN_INTEGER));
      	}
      

      Plus a property expression having a ']' followed by a dot will fail because the dot will be taken as a token separator by PropertyResolver#getNextDotIndex

      PropertyResolverTest.java
      	@Test
      	public void shouldAllowMapKeysWithADotAfterAClosingSquarBraket() throws Exception
      	{
      		String code = "].";
      		String expression = "[" + code + "]";
      		Map<String, Integer> integerMap = new HashMap<String, Integer>();
      		PropertyResolver.setValue(expression, integerMap, AN_INTEGER, CONVERTER);
      		assertThat(PropertyResolver.getValue(expression, integerMap), is(AN_INTEGER));
      		assertThat(integerMap.get(code), is(AN_INTEGER));
      	}
      

      A possible solution is to use escape characters and there is a proposal to change the property expression syntax with such escape logic at: http://wicket-dev.markmail.org/thread/unwdqpxulw7tcd5l

      If we take the lack of support for valid index characters (a map key can contain '[', ']' and '.' characters) as a missing feature by design, we should update our wiki topic [1] to make it clear.

      1 - https://cwiki.apache.org/confluence/display/WICKET/Property+Expression+Language

      Attachments

        Activity

          People

            pedrosans Pedro Santos
            pedrosans Pedro Santos
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: