Skip to content

Commit d577306

Browse files
committed
fix possible npe in yaml parameter completion Haehnchen#359
1 parent 021fdaf commit d577306

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

src/fr/adrienbrault/idea/symfony2plugin/dic/ContainerParameter.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.adrienbrault.idea.symfony2plugin.dic;
22

33

4+
import org.jetbrains.annotations.NotNull;
45
import org.jetbrains.annotations.Nullable;
56

67
import java.util.Arrays;
@@ -13,20 +14,21 @@ public class ContainerParameter {
1314
final private Collection<String> values;
1415

1516
@Deprecated
16-
public ContainerParameter(String name, @Nullable String value) {
17+
public ContainerParameter(@NotNull String name, @Nullable String value) {
1718
this(name, value, false);
1819
}
1920

20-
public ContainerParameter(String name, @Nullable String value, boolean isWeak) {
21+
public ContainerParameter(@NotNull String name, @Nullable String value, boolean isWeak) {
2122
this(name, Arrays.asList(value), isWeak);
2223
}
2324

24-
public ContainerParameter(String name, Collection<String> values, boolean isWeak) {
25+
public ContainerParameter(@NotNull String name, Collection<String> values, boolean isWeak) {
2526
this.name = name;
2627
this.values = values;
2728
this.isWeak = isWeak;
2829
}
2930

31+
@NotNull
3032
public String getName() {
3133
return name;
3234
}

src/fr/adrienbrault/idea/symfony2plugin/stubs/ContainerCollectionResolver.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.ContainerParameterStubIndex;
1212
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.ServicesDefinitionStubIndex;
1313
import fr.adrienbrault.idea.symfony2plugin.util.service.ServiceXmlParserFactory;
14+
import org.apache.commons.lang.StringUtils;
1415
import org.jetbrains.annotations.NotNull;
1516
import org.jetbrains.annotations.Nullable;
1617
import org.jetbrains.yaml.YAMLFileType;
@@ -318,7 +319,13 @@ private Map<String, ContainerParameter> getParameters() {
318319

319320
if(this.sources.contains(Source.COMPILER)) {
320321
for(Map.Entry<String, String> Entry: ServiceXmlParserFactory.getInstance(project, ParameterServiceParser.class).getParameterMap().entrySet()) {
321-
this.containerParameterMap.put(Entry.getKey(), new ContainerParameter(Entry.getKey(), Entry.getValue()));
322+
323+
// user input here; secure nullable values
324+
String key = Entry.getKey();
325+
if(key != null) {
326+
this.containerParameterMap.put(key, new ContainerParameter(key, Entry.getValue()));
327+
}
328+
322329
}
323330
}
324331

@@ -328,6 +335,11 @@ private Map<String, ContainerParameter> getParameters() {
328335

329336
for(String parameterName: projectUniqueKeysStrong.getResult()) {
330337

338+
// just for secure
339+
if(parameterName == null) {
340+
continue;
341+
}
342+
331343
// indexes is weak stuff, dont overwrite compiled ones
332344
if(!this.containerParameterMap.containsKey(parameterName)) {
333345
List<String> parameterValues = FileBasedIndexImpl.getInstance().getValues(ContainerParameterStubIndex.KEY, parameterName, getSearchScope(project));

0 commit comments

Comments
 (0)