Skip to content

Commit 1c87e55

Browse files
committed
cleanup: provide testcases for resources resolving
1 parent 5d6745b commit 1c87e55

File tree

2 files changed

+5
-131
lines changed

2 files changed

+5
-131
lines changed

src/main/java/fr/adrienbrault/idea/symfony2plugin/util/resource/FileResourceUtil.java

Lines changed: 5 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import com.intellij.psi.PsiDirectory;
1111
import com.intellij.psi.PsiElement;
1212
import com.intellij.psi.PsiFile;
13-
import com.intellij.psi.PsiManager;
1413
import com.intellij.psi.search.GlobalSearchScope;
1514
import com.intellij.psi.util.CachedValueProvider;
1615
import com.intellij.psi.util.CachedValuesManager;
@@ -48,31 +47,6 @@ public class FileResourceUtil {
4847
*/
4948
private static final String[] GLOB_DETECTION_CHARS = {"*", "?", "{", "["};
5049

51-
/**
52-
* Search for files refers to given file
53-
*/
54-
@NotNull
55-
public static Collection<VirtualFile> getFileResourceRefers(@NotNull Project project, @NotNull VirtualFile virtualFile) {
56-
String bundleLocateName = getBundleLocateName(project, virtualFile);
57-
if(bundleLocateName == null) {
58-
return Collections.emptyList();
59-
}
60-
61-
return getFileResourceRefers(project, bundleLocateName);
62-
}
63-
64-
/**
65-
* Search for files refers to given file
66-
*/
67-
@NotNull
68-
private static Collection<VirtualFile> getFileResourceRefers(@NotNull Project project, @NotNull String bundleLocateName) {
69-
return FileBasedIndex.getInstance().getContainingFiles(
70-
FileResourcesIndex.KEY,
71-
bundleLocateName,
72-
GlobalSearchScope.allScope(project)
73-
);
74-
}
75-
7650
/**
7751
* Search for files refers to given file
7852
*/
@@ -217,43 +191,6 @@ public static Collection<Pair<VirtualFile, String>> getFileResources(@NotNull Pr
217191
return files;
218192
}
219193

220-
@Nullable
221-
public static String getBundleLocateName(@NotNull Project project, @NotNull VirtualFile virtualFile) {
222-
SymfonyBundle containingBundle = new SymfonyBundleUtil(project).getContainingBundle(virtualFile);
223-
if(containingBundle == null) {
224-
return null;
225-
}
226-
227-
String relativePath = containingBundle.getRelativePath(virtualFile);
228-
if(relativePath == null) {
229-
return null;
230-
}
231-
232-
return "@" + containingBundle.getName() + "/" + relativePath;
233-
}
234-
235-
/**
236-
* Search for line definition of "@FooBundle/foo.xml"
237-
*/
238-
@NotNull
239-
private static Collection<PsiElement> getBundleLocateStringDefinitions(@NotNull Project project, final @NotNull String bundleFileName) {
240-
final Collection<PsiElement> psiElements = new HashSet<>();
241-
for (VirtualFile refVirtualFile : getFileResourceRefers(project, bundleFileName)) {
242-
PsiFile psiFile = PsiManager.getInstance(project).findFile(refVirtualFile);
243-
if(psiFile == null) {
244-
continue;
245-
}
246-
247-
FileResourceVisitorUtil.visitFile(psiFile, consumer -> {
248-
if (bundleFileName.equals(consumer.getResource())) {
249-
psiElements.add(consumer.getPsiElement());
250-
}
251-
});
252-
}
253-
254-
return psiElements;
255-
}
256-
257194
@Nullable
258195
public static RelatedItemLineMarkerInfo<PsiElement> getFileImplementsLineMarker(@NotNull PsiFile psiFile) {
259196
final Project project = psiFile.getProject();
@@ -263,15 +200,6 @@ public static RelatedItemLineMarkerInfo<PsiElement> getFileImplementsLineMarker(
263200
return null;
264201
}
265202

266-
String bundleLocateName = FileResourceUtil.getBundleLocateName(project, virtualFile);
267-
if(bundleLocateName != null && FileResourceUtil.getFileResourceRefers(project, bundleLocateName).size() > 0) {
268-
NavigationGutterIconBuilder<PsiElement> builder = NavigationGutterIconBuilder.create(PhpIcons.IMPLEMENTS)
269-
.setTargets(NotNullLazyValue.lazy(new FileResourceBundleNotNullLazyValue(project, bundleLocateName)))
270-
.setTooltipText("Navigate to resource");
271-
272-
return builder.createLineMarkerInfo(psiFile);
273-
}
274-
275203
if (hasFileResources(project, psiFile)) {
276204
NavigationGutterIconBuilder<PsiElement> builder = NavigationGutterIconBuilder.create(PhpIcons.IMPLEMENTS)
277205
.setTargets(NotNullLazyValue.lazy(new FileResourceNotNullLazyValue(project, virtualFile)))
@@ -288,69 +216,22 @@ public static RelatedItemLineMarkerInfo<PsiElement> getFileImplementsLineMarker(
288216
*/
289217
@Nullable
290218
public static RelatedItemLineMarkerInfo<PsiElement> getFileImplementsLineMarkerInFolderScope(@NotNull PsiFile psiFile) {
291-
VirtualFile virtualFile = psiFile.getVirtualFile();
292-
if(virtualFile == null) {
293-
return null;
294-
}
295-
296-
final Project project = psiFile.getProject();
297-
String bundleLocateName = FileResourceUtil.getBundleLocateName(project, virtualFile);
298-
if(bundleLocateName == null) {
219+
if (!hasFileResources(psiFile.getProject(), psiFile)) {
299220
return null;
300221
}
301222

302-
Set<String> names = new HashSet<>();
303-
names.add(bundleLocateName);
304-
305-
// strip filename
306-
int i = bundleLocateName.lastIndexOf("/");
307-
if(i > 0) {
308-
names.add(bundleLocateName.substring(0, i));
309-
}
310-
311-
int targets = 0;
312-
for (String name : names) {
313-
targets += FileResourceUtil.getFileResourceRefers(project, name).size();
314-
}
315-
316-
if(targets == 0) {
223+
VirtualFile virtualFile = psiFile.getVirtualFile();
224+
if (virtualFile == null) {
317225
return null;
318226
}
319227

320228
NavigationGutterIconBuilder<PsiElement> builder = NavigationGutterIconBuilder.create(PlatformIcons.ANNOTATION_TYPE_ICON)
321-
.setTargets(NotNullLazyValue.lazy(new FileResourceBundleNotNullLazyValue(project, names)))
229+
.setTargets(NotNullLazyValue.lazy(new FileResourceNotNullLazyValue(psiFile.getProject(), virtualFile)))
322230
.setTooltipText("Symfony: <a href=\"https://symfony.com/doc/current/routing.html#creating-routes-as-annotations\">Annotation Routing</a>");
323231

324232
return builder.createLineMarkerInfo(psiFile);
325233
}
326234

327-
private static class FileResourceBundleNotNullLazyValue implements Supplier<Collection<? extends PsiElement>> {
328-
329-
private final Collection<String> resources;
330-
private final Project project;
331-
332-
public FileResourceBundleNotNullLazyValue(@NotNull Project project, @NotNull Collection<String> resource) {
333-
this.resources = resource;
334-
this.project = project;
335-
}
336-
337-
public FileResourceBundleNotNullLazyValue(@NotNull Project project, @NotNull String resource) {
338-
this.resources = Collections.singleton(resource);
339-
this.project = project;
340-
}
341-
342-
@Override
343-
public Collection<? extends PsiElement> get() {
344-
Collection<PsiElement> psiElements = new HashSet<>();
345-
346-
for (String resource : this.resources) {
347-
psiElements.addAll(getBundleLocateStringDefinitions(project, resource));
348-
}
349-
350-
return psiElements;
351-
}
352-
}
353-
354235
/**
355236
* Gives targets to files on Bundle locate syntax. "@FooBundle/.../foo.yml"
356237
*/
@@ -474,7 +355,7 @@ private static class FileResourceNotNullLazyValue implements Supplier<Collection
474355
private final Project project;
475356
private final VirtualFile virtualFile;
476357

477-
public FileResourceNotNullLazyValue(Project project, VirtualFile virtualFile) {
358+
public FileResourceNotNullLazyValue(@NotNull Project project, @NotNull VirtualFile virtualFile) {
478359
this.project = project;
479360
this.virtualFile = virtualFile;
480361
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/util/resource/FileResourceUtilTest.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,6 @@ public String getTestDataPath() {
2828
return "src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/util/resource/fixtures";
2929
}
3030

31-
public void testGetFileResourceRefers() {
32-
createBundleScopeProject();
33-
34-
PsiFile psiFile = myFixture.configureByText("foo.xml", "foo");
35-
assertNotNull(ContainerUtil.find(FileResourceUtil.getFileResourceRefers(getProject(), psiFile.getVirtualFile()), virtualFile -> virtualFile.getName().equals("target.xml")));
36-
}
37-
3831
public void testGetFileResourceTargetsInBundleDirectory() {
3932
createBundleScopeProject();
4033

0 commit comments

Comments
 (0)