diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/Route.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/Route.java index c3eb2ccae..2a9d6cb53 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/Route.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/Route.java @@ -84,7 +84,7 @@ public Set getVariables() { // possible fallback // /hello/{foo}/{foo1}/bar Set hashSet = new TreeSet<>(); - Matcher matcher = Pattern.compile("\\{(\\w+)}").matcher(this.path); + Matcher matcher = Pattern.compile("\\{!?(\\w+)}").matcher(this.path); while(matcher.find()){ hashSet.add(matcher.group(1)); } diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/dict/StubIndexedRoute.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/dict/StubIndexedRoute.java index c09cc2571..788b04ce4 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/dict/StubIndexedRoute.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/dict/StubIndexedRoute.java @@ -14,7 +14,7 @@ /** * @author Daniel Espendiller */ -public class StubIndexedRoute implements RouteInterface, Serializable{ +public class StubIndexedRoute implements RouteInterface, Serializable { @NotNull private final String name; diff --git a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/routing/RouteTest.java b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/routing/RouteTest.java index 0b24ab030..f0d285405 100644 --- a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/routing/RouteTest.java +++ b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/routing/RouteTest.java @@ -35,7 +35,7 @@ public void testIndexNullable() { @Test public void testControllerNullable() { - assertEquals(null, new Route("foo", new HashSet<>(), new HashMap() {{ + assertNull(new Route("foo", new HashSet<>(), new HashMap() {{ put("_controller", null); }}, new HashMap<>(), new ArrayList<>()).getController()); @@ -47,10 +47,24 @@ public void testControllerNullable() { @Test public void testPathVariables() { StubIndexedRoute route = new StubIndexedRoute("foobar"); - route.setPath("/foo/{foo}/{foobar}/bar"); + route.setPath("/foo/{foo}/{foobar}/{#foo1}/{|foo2}/bar"); - assertTrue("foobar", - new Route(route).getVariables().containsAll(Arrays.asList("foo", "foobar")) + Set variables = new Route(route).getVariables(); + assertEquals(2, variables.size()); + assertTrue("foobar", variables.containsAll(Arrays.asList("foo", "foobar"))); + } + + @Test + public void testPathVariablesForDefault() { + StubIndexedRoute route = new StubIndexedRoute("foobar"); + route.setPath("/foo/{!foo}/{!foobar}//{Foobar2}bar"); + + Set variables = new Route(route).getVariables(); + + assertEquals(3, variables.size()); + assertTrue( + "foobar", + variables.containsAll(Arrays.asList("foo", "foobar", "Foobar2")) ); } }