Skip to content

Commit e6e4a8f

Browse files
committed
Merge branch 'feature/autowire-value-resolve'
2 parents 3017445 + 5cea34d commit e6e4a8f

File tree

3 files changed

+74
-10
lines changed

3 files changed

+74
-10
lines changed

src/fr/adrienbrault/idea/symfony2plugin/action/ServiceActionUtil.java

+16-10
Original file line numberDiff line numberDiff line change
@@ -393,22 +393,28 @@ public static boolean isValidXmlParameterInspectionService(@NotNull XmlTag xmlTa
393393
}
394394
}
395395

396+
// <service autowire="[false|true]"/>
397+
String autowire = xmlTag.getAttributeValue("autowire");
398+
if("true".equalsIgnoreCase(autowire)) {
399+
return false;
400+
} else if("false".equalsIgnoreCase(autowire)) {
401+
return true;
402+
}
403+
396404
// <service><factory/></service>
397405
// symfony2 >= 2.6
398406
if(xmlTag.findSubTags("factory").length > 0) {
399407
return false;
400408
}
401409

402-
// <services><defaults/></services>
403-
PsiElement parent = xmlTag.getParent();
404-
if(!(parent instanceof XmlTag) || !"services".equals(((XmlTag) parent).getName())) {
405-
return true;
406-
}
407-
408-
// <defaults autowire="true" />
409-
for (XmlTag defaults : ((XmlTag) parent).findSubTags("defaults")) {
410-
if("true".equalsIgnoreCase(defaults.getAttributeValue("autowire"))) {
411-
return false;
410+
// <services autowire="true"><defaults/></services>
411+
PsiElement servicesTag = xmlTag.getParent();
412+
if(servicesTag instanceof XmlTag && "services".equals(((XmlTag) servicesTag).getName())) {
413+
// <defaults autowire="true" />
414+
for (XmlTag defaults : ((XmlTag) servicesTag).findSubTags("defaults")) {
415+
if("true".equalsIgnoreCase(defaults.getAttributeValue("autowire"))) {
416+
return false;
417+
}
412418
}
413419
}
414420

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package fr.adrienbrault.idea.symfony2plugin.tests.action;
2+
3+
import com.intellij.ide.highlighter.XmlFileType;
4+
import com.intellij.psi.PsiElement;
5+
import com.intellij.psi.xml.XmlTag;
6+
import fr.adrienbrault.idea.symfony2plugin.action.ServiceActionUtil;
7+
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
8+
import org.jetbrains.annotations.NotNull;
9+
10+
/*
11+
* @author Daniel Espendiller <daniel@espendiller.net>
12+
*/
13+
public class ServiceActionUtilTest extends SymfonyLightCodeInsightFixtureTestCase {
14+
public void testThatAutowireForServiceBlocksInspect() {
15+
XmlTag xmlTag = createServiceXmlTag(
16+
" <services>\n" +
17+
" <serv<caret>ice autowire=\"true\"/>\n" +
18+
" </services>"
19+
);
20+
21+
assertFalse(ServiceActionUtil.isValidXmlParameterInspectionService(xmlTag));
22+
}
23+
24+
public void testThatDefaultValueIsOverwriteInService() {
25+
XmlTag xmlTag = createServiceXmlTag(
26+
" <services>\n" +
27+
" <defaults autowire=\"true\" />\n" +
28+
" <serv<caret>ice autowire=\"false\"/>\n" +
29+
" </services>"
30+
);
31+
32+
assertTrue(ServiceActionUtil.isValidXmlParameterInspectionService(xmlTag));
33+
}
34+
35+
public void testThatAutowireForDefaultMustNotInspectService() {
36+
XmlTag xmlTag = createServiceXmlTag(
37+
" <services>\n" +
38+
" <defaults autowire=\"true\" />\n" +
39+
" <serv<caret>ice/>\n" +
40+
" </services>");
41+
42+
assertFalse(ServiceActionUtil.isValidXmlParameterInspectionService(xmlTag));
43+
}
44+
45+
@NotNull
46+
private XmlTag createServiceXmlTag(@NotNull String content) {
47+
myFixture.configureByText(XmlFileType.INSTANCE, content);
48+
49+
PsiElement psiElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset());
50+
return (XmlTag) psiElement.getParent();
51+
}
52+
}

tests/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/inspection/XmlServiceArgumentInspectionTest.java

+6
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ public void testThatDefaultValueMustNotProvideInspection() {
9999
createContainer("<defaults autowire=\"false\" /><serv<caret>ice class=\"Foo\\Bar\"/>"),
100100
"Missing argument"
101101
);
102+
103+
assertLocalInspectionContains(
104+
"services.xml",
105+
createContainer("<defaults autowire=\"true\" /><serv<caret>ice autowire=\"false\" class=\"Foo\\Bar\"/>"),
106+
"Missing argument"
107+
);
102108
}
103109

104110
public void testThatServiceShortcutOnIdAttributeIsProvidesInspection() {

0 commit comments

Comments
 (0)