Skip to content

Commit 6b30cbb

Browse files
authored
Merge pull request #1802 from Haehnchen/feature/xml-index-filter-extension
Feature/xml index filter extension
2 parents b8b83f0 + 7fb9030 commit 6b30cbb

12 files changed

+117
-60
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/ContainerIdUsagesStubIndex.java

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

3-
import com.intellij.ide.highlighter.XmlFileType;
43
import com.intellij.psi.PsiElement;
54
import com.intellij.psi.PsiFile;
65
import com.intellij.psi.xml.XmlDocument;
@@ -12,10 +11,10 @@
1211
import com.intellij.util.io.EnumeratorStringDescriptor;
1312
import com.intellij.util.io.KeyDescriptor;
1413
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
14+
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.inputFilter.FileInputFilter;
1515
import fr.adrienbrault.idea.symfony2plugin.util.yaml.YamlHelper;
1616
import org.apache.commons.lang.StringUtils;
1717
import org.jetbrains.annotations.NotNull;
18-
import org.jetbrains.yaml.YAMLFileType;
1918
import org.jetbrains.yaml.psi.*;
2019

2120
import java.util.Collections;
@@ -76,7 +75,7 @@ public DataExternalizer<Integer> getValueExternalizer() {
7675
@NotNull
7776
@Override
7877
public FileBasedIndex.InputFilter getInputFilter() {
79-
return file -> file.getFileType() == XmlFileType.INSTANCE || file.getFileType() == YAMLFileType.YML;
78+
return FileInputFilter.XML_YAML;
8079
}
8180

8281
@Override

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/ContainerParameterStubIndex.java

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

3-
import com.intellij.ide.highlighter.XmlFileType;
43
import com.intellij.psi.PsiFile;
54
import com.intellij.psi.xml.XmlFile;
65
import com.intellij.util.indexing.*;
@@ -9,9 +8,9 @@
98
import com.intellij.util.io.KeyDescriptor;
109
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
1110
import fr.adrienbrault.idea.symfony2plugin.config.xml.XmlHelper;
11+
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.inputFilter.FileInputFilter;
1212
import fr.adrienbrault.idea.symfony2plugin.util.yaml.YamlHelper;
1313
import org.jetbrains.annotations.NotNull;
14-
import org.jetbrains.yaml.YAMLFileType;
1514
import org.jetbrains.yaml.psi.YAMLFile;
1615

1716
import java.util.HashMap;
@@ -84,7 +83,7 @@ public DataExternalizer<String> getValueExternalizer() {
8483
@NotNull
8584
@Override
8685
public FileBasedIndex.InputFilter getInputFilter() {
87-
return file -> file.getFileType() == XmlFileType.INSTANCE || file.getFileType() == YAMLFileType.YML;
86+
return FileInputFilter.XML_YAML;
8887
}
8988

9089
@Override

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/DoctrineMetadataFileStubIndex.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
package fr.adrienbrault.idea.symfony2plugin.stubs.indexes;
22

3-
import com.intellij.ide.highlighter.XmlFileType;
4-
import com.intellij.openapi.fileTypes.FileType;
53
import com.intellij.openapi.util.Pair;
64
import com.intellij.psi.PsiFile;
75
import com.intellij.util.indexing.*;
86
import com.intellij.util.io.DataExternalizer;
97
import com.intellij.util.io.EnumeratorStringDescriptor;
108
import com.intellij.util.io.KeyDescriptor;
11-
import com.jetbrains.php.lang.PhpFileType;
129
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
1310
import fr.adrienbrault.idea.symfony2plugin.doctrine.DoctrineUtil;
1411
import fr.adrienbrault.idea.symfony2plugin.doctrine.dict.DoctrineModel;
1512
import fr.adrienbrault.idea.symfony2plugin.doctrine.dict.DoctrineModelSerializable;
1613
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.externalizer.ObjectStreamDataExternalizer;
14+
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.inputFilter.FileInputFilter;
1715
import gnu.trove.THashMap;
1816
import org.jetbrains.annotations.NotNull;
19-
import org.jetbrains.yaml.YAMLFileType;
2017

2118
import java.util.Collection;
2219
import java.util.Map;
@@ -89,14 +86,7 @@ public DataExternalizer<DoctrineModelSerializable> getValueExternalizer() {
8986
@NotNull
9087
@Override
9188
public FileBasedIndex.InputFilter getInputFilter() {
92-
return virtualFile -> {
93-
FileType fileType = virtualFile.getFileType();
94-
return
95-
fileType == XmlFileType.INSTANCE ||
96-
fileType == PhpFileType.INSTANCE ||
97-
fileType == YAMLFileType.YML
98-
;
99-
};
89+
return FileInputFilter.XML_YAML_PHP;
10090
}
10191

10292
@Override

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/FileResourcesIndex.java

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

3-
import com.intellij.ide.highlighter.XmlFileType;
43
import com.intellij.psi.PsiFile;
54
import com.intellij.util.indexing.*;
65
import com.intellij.util.io.DataExternalizer;
@@ -9,10 +8,10 @@
98
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
109
import fr.adrienbrault.idea.symfony2plugin.stubs.dict.FileResource;
1110
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.externalizer.ObjectStreamDataExternalizer;
11+
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.inputFilter.FileInputFilter;
1212
import fr.adrienbrault.idea.symfony2plugin.util.FileResourceVisitorUtil;
1313
import gnu.trove.THashMap;
1414
import org.jetbrains.annotations.NotNull;
15-
import org.jetbrains.yaml.YAMLFileType;
1615

1716
import java.util.Collections;
1817
import java.util.Map;
@@ -45,9 +44,12 @@ public DataIndexer<String, FileResource, FileContent> getIndexer() {
4544

4645
final Map<String, FileResource> items = new THashMap<>();
4746

48-
FileResourceVisitorUtil.visitFile(psiFile, consumer ->
49-
items.put(consumer.getResource(), consumer.createFileResource())
50-
);
47+
FileResourceVisitorUtil.visitFile(psiFile, consumer -> {
48+
String resource = consumer.getResource();
49+
if (resource.length() < 255) {
50+
items.put(resource, consumer.createFileResource());
51+
}
52+
});
5153

5254
return items;
5355
};
@@ -68,8 +70,7 @@ public DataExternalizer<FileResource> getValueExternalizer() {
6870
@NotNull
6971
@Override
7072
public FileBasedIndex.InputFilter getInputFilter() {
71-
return virtualFile ->
72-
virtualFile.getFileType() == XmlFileType.INSTANCE || virtualFile.getFileType() == YAMLFileType.YML;
73+
return FileInputFilter.XML_YAML;
7374
}
7475

7576
@Override

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/RoutesStubIndex.java

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

3-
import com.intellij.ide.highlighter.XmlFileType;
4-
import com.intellij.openapi.fileTypes.FileType;
53
import com.intellij.openapi.vfs.VfsUtil;
64
import com.intellij.openapi.vfs.VirtualFile;
75
import com.intellij.psi.PsiFile;
@@ -11,17 +9,16 @@
119
import com.intellij.util.io.DataExternalizer;
1210
import com.intellij.util.io.EnumeratorStringDescriptor;
1311
import com.intellij.util.io.KeyDescriptor;
14-
import com.jetbrains.php.lang.PhpFileType;
1512
import com.jetbrains.php.lang.psi.PhpFile;
1613
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
1714
import fr.adrienbrault.idea.symfony2plugin.routing.RouteHelper;
1815
import fr.adrienbrault.idea.symfony2plugin.stubs.dict.StubIndexedRoute;
1916
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.externalizer.ObjectStreamDataExternalizer;
17+
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.inputFilter.FileInputFilter;
2018
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.visitor.AnnotationRouteElementWalkingVisitor;
2119
import fr.adrienbrault.idea.symfony2plugin.util.ProjectUtil;
2220
import gnu.trove.THashMap;
2321
import org.jetbrains.annotations.NotNull;
24-
import org.jetbrains.yaml.YAMLFileType;
2522
import org.jetbrains.yaml.psi.YAMLDocument;
2623
import org.jetbrains.yaml.psi.YAMLFile;
2724

@@ -64,13 +61,19 @@ public DataIndexer<String, StubIndexedRoute, FileContent> getIndexer() {
6461
}
6562

6663
for(StubIndexedRoute indexedRoutes: RouteHelper.getYamlRouteDefinitions(yamlDocument)) {
67-
map.put(indexedRoutes.getName(), indexedRoutes);
64+
String name = indexedRoutes.getName();
65+
if (name.length() < 255) {
66+
map.put(name, indexedRoutes);
67+
}
6868
}
6969

7070
return map;
7171
} else if(psiFile instanceof XmlFile) {
7272
for(StubIndexedRoute indexedRoutes: RouteHelper.getXmlRouteDefinitions((XmlFile) psiFile)) {
73-
map.put(indexedRoutes.getName(), indexedRoutes);
73+
String name = indexedRoutes.getName();
74+
if (name.length() < 255) {
75+
map.put(name, indexedRoutes);
76+
}
7477
}
7578
} else if(psiFile instanceof PhpFile) {
7679
// annotations: @Route()
@@ -101,10 +104,7 @@ public DataExternalizer<StubIndexedRoute> getValueExternalizer() {
101104
@NotNull
102105
@Override
103106
public FileBasedIndex.InputFilter getInputFilter() {
104-
return file -> {
105-
FileType fileType = file.getFileType();
106-
return fileType == YAMLFileType.YML || fileType == XmlFileType.INSTANCE || fileType == PhpFileType.INSTANCE;
107-
};
107+
return FileInputFilter.XML_YAML_PHP;
108108
}
109109

110110
@Override

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/ServicesDefinitionStubIndex.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package fr.adrienbrault.idea.symfony2plugin.stubs.indexes;
22

3-
import com.intellij.ide.highlighter.XmlFileType;
43
import com.intellij.openapi.vfs.VfsUtil;
54
import com.intellij.psi.PsiFile;
65
import com.intellij.util.indexing.*;
76
import com.intellij.util.io.DataExternalizer;
87
import com.intellij.util.io.EnumeratorStringDescriptor;
98
import com.intellij.util.io.KeyDescriptor;
10-
import com.jetbrains.php.lang.PhpFileType;
119
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
1210
import fr.adrienbrault.idea.symfony2plugin.dic.container.ServiceSerializable;
1311
import fr.adrienbrault.idea.symfony2plugin.dic.container.util.ServiceContainerUtil;
1412
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.externalizer.ObjectStreamDataExternalizer;
13+
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.inputFilter.FileInputFilter;
1514
import fr.adrienbrault.idea.symfony2plugin.util.ProjectUtil;
1615
import gnu.trove.THashMap;
1716
import org.jetbrains.annotations.NotNull;
18-
import org.jetbrains.yaml.YAMLFileType;
1917

2018
import java.io.File;
2119
import java.util.Collection;
@@ -74,8 +72,7 @@ public DataExternalizer<ServiceSerializable> getValueExternalizer() {
7472
@NotNull
7573
@Override
7674
public FileBasedIndex.InputFilter getInputFilter() {
77-
return file ->
78-
file.getFileType() == XmlFileType.INSTANCE || file.getFileType() == YAMLFileType.YML || file.getFileType() == PhpFileType.INSTANCE;
75+
return FileInputFilter.XML_YAML_PHP;
7976
}
8077

8178
@Override

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/ServicesTagStubIndex.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package fr.adrienbrault.idea.symfony2plugin.stubs.indexes;
22

3-
import com.intellij.ide.highlighter.XmlFileType;
43
import com.intellij.psi.PsiFile;
54
import com.intellij.psi.xml.XmlFile;
65
import com.intellij.util.indexing.*;
@@ -10,9 +9,9 @@
109
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
1110
import fr.adrienbrault.idea.symfony2plugin.form.util.FormUtil;
1211
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.externalizer.StringSetDataExternalizer;
12+
import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.inputFilter.FileInputFilter;
1313
import gnu.trove.THashMap;
1414
import org.jetbrains.annotations.NotNull;
15-
import org.jetbrains.yaml.YAMLFileType;
1615
import org.jetbrains.yaml.psi.YAMLFile;
1716

1817
import java.util.Map;
@@ -75,8 +74,7 @@ public DataExternalizer<Set<String>> getValueExternalizer() {
7574
@NotNull
7675
@Override
7776
public FileBasedIndex.InputFilter getInputFilter() {
78-
return file ->
79-
file.getFileType() == XmlFileType.INSTANCE || file.getFileType() == YAMLFileType.YML;
77+
return FileInputFilter.XML_YAML;
8078
}
8179

8280
@Override

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/TranslationStubIndex.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,21 @@ public class TranslationStubIndex extends FileBasedIndexExtension<String, Set<St
3434
@Override
3535
public DataIndexer<String, Set<String>, FileContent> getIndexer() {
3636

37-
return new DataIndexer<String, Set<String>, FileContent>() {
37+
return new DataIndexer<>() {
3838
@NotNull
3939
@Override
4040
public Map<String, Set<String>> map(@NotNull FileContent inputData) {
41-
if(!Symfony2ProjectComponent.isEnabledForIndex(inputData.getProject())) {
41+
if (!Symfony2ProjectComponent.isEnabledForIndex(inputData.getProject())) {
4242
return Collections.emptyMap();
4343
}
4444

4545
String extension = inputData.getFile().getExtension();
46-
if("xlf".equalsIgnoreCase(extension) || "xliff".equalsIgnoreCase(extension)) {
46+
if ("xlf".equalsIgnoreCase(extension) || "xliff".equalsIgnoreCase(extension)) {
4747
return getXlfStringMap(inputData);
4848
}
4949

5050
PsiFile psiFile = inputData.getPsiFile();
51-
if(!(psiFile instanceof YAMLFile)) {
51+
if (!(psiFile instanceof YAMLFile)) {
5252
return Collections.emptyMap();
5353
}
5454

@@ -58,7 +58,7 @@ public Map<String, Set<String>> map(@NotNull FileContent inputData) {
5858
}
5959

6060
String domainName = this.getDomainName(inputData.getFileName());
61-
if(domainName == null) {
61+
if (domainName == null) {
6262
return Collections.emptyMap();
6363
}
6464

@@ -68,7 +68,7 @@ public Map<String, Set<String>> map(@NotNull FileContent inputData) {
6868
return true;
6969
});
7070

71-
if(translationKeySet.size() == 0) {
71+
if (translationKeySet.size() == 0) {
7272
return Collections.emptyMap();
7373
}
7474

@@ -84,7 +84,7 @@ private boolean isValidTranslationFile(@NotNull FileContent inputData, @NotNull
8484
// - "Resources/translations"
8585
// - "translations/[.../]foo.de.yml"
8686
String relativePath = VfsUtil.getRelativePath(inputData.getFile(), ProjectUtil.getProjectDir(inputData.getProject()), '/');
87-
if(relativePath != null) {
87+
if (relativePath != null) {
8888
return relativePath.contains("/translations") || relativePath.startsWith("translations/");
8989
}
9090

@@ -98,13 +98,13 @@ private boolean isValidTranslationFile(@NotNull FileContent inputData, @NotNull
9898
private Map<String, Set<String>> getXlfStringMap(@NotNull FileContent inputData) {
9999
// testing files are not that nice
100100
String relativePath = VfsUtil.getRelativePath(inputData.getFile(), ProjectUtil.getProjectDir(inputData.getProject()), '/');
101-
if(relativePath != null && (relativePath.contains("/Test/") || relativePath.contains("/Tests/") || relativePath.contains("/Fixture/") || relativePath.contains("/Fixtures/"))) {
101+
if (relativePath != null && (relativePath.contains("/Test/") || relativePath.contains("/Tests/") || relativePath.contains("/Fixture/") || relativePath.contains("/Fixtures/"))) {
102102
return Collections.emptyMap();
103103
}
104104

105105
// extract domain name
106106
String domainName = getDomainName(inputData.getFileName());
107-
if(domainName == null) {
107+
if (domainName == null) {
108108
return Collections.emptyMap();
109109
}
110110

@@ -116,7 +116,7 @@ private Map<String, Set<String>> getXlfStringMap(@NotNull FileContent inputData)
116116
}
117117

118118
Set<String> set = TranslationUtil.getXliffTranslations(inputStream);
119-
if(set.size() == 0) {
119+
if (set.size() == 0) {
120120
return Collections.emptyMap();
121121
}
122122

@@ -129,14 +129,14 @@ private Map<String, Set<String>> getXlfStringMap(@NotNull FileContent inputData)
129129
@Nullable
130130
private String getDomainName(@NotNull String fileName) {
131131
String[] split = fileName.split("\\.");
132-
if(split.length < 2 || Arrays.stream(split).anyMatch(s -> s.length() == 0)) {
132+
if (split.length < 2 || Arrays.stream(split).anyMatch(s -> s.length() == 0)) {
133133
return null;
134134
}
135135

136136
// foo.fr.yml
137137
// dont index fr.yml
138138
int domainSplit = fileName.lastIndexOf(".");
139-
if(domainSplit <= 2) {
139+
if (domainSplit <= 2) {
140140
return null;
141141
}
142142

src/main/java/fr/adrienbrault/idea/symfony2plugin/stubs/indexes/TwigBlockIndexExtension.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,17 @@ public DataIndexer<String, Set<String>, FileContent> getIndexer() {
4545
PsiFile psiFile = fileContent.getPsiFile();
4646
if(psiFile instanceof TwigFile) {
4747
for (TwigBlock twigBlock : TwigUtil.getBlocksInFile((TwigFile) psiFile)) {
48+
String blockName = twigBlock.getName();
49+
if (blockName.length() > 255) {
50+
continue;
51+
}
52+
4853
// we only index file scope
4954
// {% embed 'foo.html.twig' %}{% block foo %}{% endembed %}
5055
PsiElement embedStatement = PsiElementUtils.getParentOfType(twigBlock.getTarget(), TwigElementTypes.EMBED_STATEMENT);
5156
if(embedStatement == null) {
5257
blocks.putIfAbsent("block", new HashSet<>());
53-
blocks.get("block").add(twigBlock.getName());
58+
blocks.get("block").add(blockName);
5459
}
5560
}
5661

@@ -63,7 +68,7 @@ public DataIndexer<String, Set<String>, FileContent> getIndexer() {
6368
public void visitElement(PsiElement element) {
6469
if(TwigPattern.getTwigTagUseNamePattern().accepts(element) && PsiElementUtils.getParentOfType(element, TwigElementTypes.EMBED_STATEMENT) == null) {
6570
String templateName = TwigUtil.normalizeTemplateName(PsiElementUtils.trimQuote(element.getText()));
66-
if(StringUtils.isNotBlank(templateName)) {
71+
if(templateName.length() < 255 && StringUtils.isNotBlank(templateName)) {
6772
blocks.putIfAbsent("use", new HashSet<>());
6873
blocks.get("use").add(templateName);
6974
}

0 commit comments

Comments
 (0)