Use of atomic grouping will prevent this issue. Running the following tests results in a StackOverflow.
public class Testy {
@Test
public void test() {
URIPattern pattern = new URIPattern("/api/reservable/{list}");
URIResolver resolver = new URIResolver(URL);
URIResolveResult result = resolver.resolve(pattern);
assertEquals(URIResolveResult.Status.RESOLVED, result.getStatus());
}
private static final String URL = "/api/reservable/54f39b9977220110b3d7be377b5a99ab%2Cd4f39b9977220110b3d7be377b5a999f%2Ce0f3db9977220110b3d7be377b5a9919%2Cb6d3139977220110b3d7be377b5a99b4%2C9ed3139977220110b3d7be377b5a9916%2Cfbd3939977220110b3d7be377b5a99e8%2C7ad3539977220110b3d7be377b5a9902%2Cfbd3939977220110b3d7be377b5a99ee%2C36d3139977220110b3d7be377b5a99d0%2C9ed3139977220110b3d7be377b5a9919%2C9fd3539977220110b3d7be377b5a99bb%2C12d3df5977220110b3d7be377b5a99f8%2C5fd3539977220110b3d7be377b5a99cf%2C7fd3939977220110b3d7be377b5a99c6%2Cbad3139977220110b3d7be377b5a99eb%2Cbbd3d39977220110b3d7be377b5a9902%2Cbed3139977220110b3d7be377b5a99b5%2Cf3d3939977220110b3d7be377b5a99e7%2Cd3d3539977220110b3d7be377b5a99f9%2C1ad3df5977220110b3d7be377b5a99f0%2Cd3d3539977220110b3d7be377b5a99f0%2C96d3139977220110b3d7be377b5a9918%2C57d3539977220110b3d7be377b5a99ce%2Cb6d3139977220110b3d7be377b5a99ae%2Cfad3139977220110b3d7be377b5a99d7%2C92d3df5977220110b3d7be377b5a99d0%2C7fd3939977220110b3d7be377b5a99cc%2Cfed3139977220110b3d7be377b5a999b%2C97d3539977220110b3d7be377b5a99ba%2Cbad3139977220110b3d7be377b5a99f4%2C54f39b9977220110b3d7be377b5a99ab%2Cd4f39b9977220110b3d7be377b5a999f%2Ce0f3db9977220110b3d7be377b5a9919%2Cb6d3139977220110b3d7be377b5a99b4%2C9ed3139977220110b3d7be377b5a9916%2Cfbd3939977220110b3d7be377b5a99e8%2C7ad3539977220110b3d7be377b5a9902%2Cfbd3939977220110b3d7be377b5a99ee%2C36d3139977220110b3d7be377b5a99d0%2C9ed3139977220110b3d7be377b5a9919%2C9fd3539977220110b3d7be377b5a99bb%2C12d3df5977220110b3d7be377b5a99f8%2C5fd3539977220110b3d7be377b5a99cf%2C7fd3939977220110b3d7be377b5a99c6%2Cbad3139977220110b3d7be377b5a99eb%2Cbbd3d39977220110b3d7be377b5a9902%2Cbed3139977220110b3d7be377b5a99b5%2Cf3d3939977220110b3d7be377b5a99e7%2Cd3d3539977220110b3d7be377b5a99f9%2C1ad3df5977220110b3d7be377b5a99f0%2Cd3d3539977220110b3d7be377b5a99f0%2C96d3139977220110b3d7be377b5a9918%2C57d3539977220110b3d7be377b5a99ce%2Cb6d3139977220110b3d7be377b5a99ae%2Cfad3139977220110b3d7be377b5a99d7%2C92d3df5977220110b3d7be377b5a99d0%2C7fd3939977220110b3d7be377b5a99cc%2Cfed3139977220110b3d7be377b5a999b%2C97d3539977220110b3d7be377b5a99ba%2Cbad3139977220110b3d7be377b5a99f4%2C54f39b9977220110b3d7be377b5a99ab%2Cd4f39b9977220110b3d7be377b5a999f%2Ce0f3db9977220110b3d7be377b5a9919%2Cb6d3139977220110b3d7be377b5a99b4%2C9ed3139977220110b3d7be377b5a9916%2Cfbd3939977220110b3d7be377b5a99e8%2C7ad3539977220110b3d7be377b5a9902%2Cfbd3939977220110b3d7be377b5a99ee%2C36d3139977220110b3d7be377b5a99d0%2C9ed3139977220110b3d7be377b5a9919%2C9fd3539977220110b3d7be377b5a99bb%2C12d3df5977220110b3d7be377b5a99f8%2C5fd3539977220110b3d7be377b5a99cf%2C7fd3939977220110b3d7be377b5a99c6%2Cbad3139977220110b3d7be377b5a99eb%2Cbbd3d39977220110b3d7be377b5a9902%2Cbed3139977220110b3d7be377b5a99b5%2Cf3d3939977220110b3d7be377b5a99e7%2Cd3d3539977220110b3d7be377b5a99f9%2C1ad3df5977220110b3d7be377b5a99f0%2Cd3d3539977220110b3d7be377b5a99f0%2C96d3139977220110b3d7be377b5a9918%2C57d3539977220110b3d7be377b5a99ce%2Cb6d3139977220110b3d7be377b5a99ae%2Cfad3139977220110b3d7be377b5a99d7%2C92d3df5977220110b3d7be377b5a99d0%2C7fd3939977220110b3d7be377b5a99cc%2Cfed3139977220110b3d7be377b5a999b%2C97d3539977220110b3d7be377b5a99ba%2Cbad3139977220110b3d7be377b5a99f4";
}
Use of atomic grouping will prevent this issue. Running the following tests results in a StackOverflow.