Skip to content

Commit dd320c6

Browse files
authored
Merge pull request #1934 from Haehnchen/feature/resource-namespace-xml
support resource namespace navigation for xml prototype
2 parents 6cc9104 + c3dd196 commit dd320c6

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/config/xml/XmlHelper.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,12 @@ public static PsiElement getLocalServiceName(PsiFile psiFile, String serviceName
427427
for(XmlTag servicesTag: xmlTag.getSubTags()) {
428428
if(servicesTag.getName().equals("services")) {
429429
for(XmlTag serviceTag: servicesTag.getSubTags()) {
430-
String serviceNameId = serviceTag.getAttributeValue("id");
430+
String name = serviceTag.getName();
431+
// we know the attributes and context, but rebuild it like yaml
432+
String serviceNameId = "prototype".equals(name)
433+
? serviceTag.getAttributeValue("namespace")
434+
: serviceTag.getAttributeValue("id");
435+
431436
if(serviceNameId != null && serviceNameId.equalsIgnoreCase(serviceName)) {
432437
return serviceTag;
433438
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/stubs/ServiceIndexUtilTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ public void testFindServiceDefinitionsForStringInsideXml() {
5353
));
5454
}
5555

56+
public void testFindServiceDefinitionsForNamespacePrototype() {
57+
assertTrue(ServiceIndexUtil.findServiceDefinitions(getProject(), "App\\").stream()
58+
.anyMatch(psiElement -> psiElement instanceof XmlTag && "App\\".equalsIgnoreCase(((XmlTag) psiElement).getAttributeValue("namespace")))
59+
);
60+
61+
assertTrue(ServiceIndexUtil.findServiceDefinitions(getProject(), "app\\").stream()
62+
.anyMatch(psiElement -> psiElement instanceof XmlTag && "App\\".equalsIgnoreCase(((XmlTag) psiElement).getAttributeValue("namespace")))
63+
);
64+
}
65+
5666
public void testFindServiceDefinitionsForStringInsideXmlUpperCase() {
5767
assertNotNull(ContainerUtil.find(
5868
ServiceIndexUtil.findServiceDefinitions(getProject(), "foo.xml_id.upper"),

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/stubs/fixtures/services.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<services>
88
<service id="foo.xml_id" class="My\Foo\Service\Targets" parent="foo.xml_id.parent"/>
99
<service id="foo.xml_id.UPPER" class="My\Foo\Service\Targets"/>
10+
11+
<prototype namespace="App\" resource="../src/*" exclude="../src/{DependencyInjection,Entity,Tests,Kernel.php}"/>
1012
</services>
1113

1214
</container>

0 commit comments

Comments
 (0)