File tree Expand file tree Collapse file tree 5 files changed +62
-0
lines changed
src/software/aws/toolkits/jetbrains/services/federation/psireferences
tst/software/aws/toolkits/jetbrains/services/federation/psireferences Expand file tree Collapse file tree 5 files changed +62
-0
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "type" : " bugfix" ,
3
+ "description" : " Workaround regression with ARN console navigation in JSON files"
4
+ }
Original file line number Diff line number Diff line change
1
+ <!-- Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. -->
2
+ <!-- SPDX-License-Identifier: Apache-2.0 -->
3
+
4
+ <idea-plugin >
5
+ <extensions defaultExtensionNs =" com.intellij" >
6
+ <psi .referenceContributor implementation =" software.aws.toolkits.jetbrains.services.federation.psireferences.JsonArnPsiReferenceContributor" />
7
+ </extensions >
8
+ </idea-plugin >
Original file line number Diff line number Diff line change @@ -73,6 +73,7 @@ with what features/services are supported.
73
73
<depends optional =" true" config-file =" ext-docker.xml" >Docker</depends >
74
74
<depends optional =" true" config-file =" ext-java.xml" >com.intellij.modules.java</depends >
75
75
<depends optional =" true" config-file =" ext-python.xml" >com.intellij.modules.python</depends >
76
+ <depends optional =" true" config-file =" ext-json.xml" >com.intellij.modules.json</depends >
76
77
77
78
<xi : include href =" /META-INF/IC-221.xml" xpointer =" xpointer(/idea-plugin/*)" >
78
79
<xi : fallback />
Original file line number Diff line number Diff line change
1
+ // Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ package software.aws.toolkits.jetbrains.services.federation.psireferences
5
+
6
+ import com.intellij.json.psi.JsonStringLiteral
7
+ import com.intellij.patterns.PlatformPatterns
8
+ import com.intellij.psi.PsiReferenceContributor
9
+ import com.intellij.psi.PsiReferenceRegistrar
10
+
11
+ class JsonArnPsiReferenceContributor : PsiReferenceContributor () {
12
+ override fun registerReferenceProviders (registrar : PsiReferenceRegistrar ) {
13
+ registrar.registerReferenceProvider(
14
+ PlatformPatterns .psiElement(JsonStringLiteral ::class .java),
15
+ ArnPsiReferenceProvider (),
16
+ PsiReferenceRegistrar .LOWER_PRIORITY
17
+ )
18
+ }
19
+ }
Original file line number Diff line number Diff line change @@ -156,4 +156,34 @@ class ArnPsiReferenceProviderTest {
156
156
}
157
157
}
158
158
}
159
+
160
+ @Test
161
+ fun `attaches reference to JSON values` () {
162
+ // language=JSON
163
+ val contents = """
164
+ {
165
+ "hello": "arn:aws:lambda::123456789012:function"
166
+ }
167
+ """ .trimIndent()
168
+
169
+ val file = runInEdtAndGet {
170
+ projectRule.fixture.configureByText(" json.json" , contents)
171
+ }.virtualFile
172
+
173
+ val elements = mutableListOf<ArnReference >()
174
+ runReadAction {
175
+ PsiTreeUtil .processElements(
176
+ file.toPsi(projectRule.project),
177
+ PsiElementProcessor { child ->
178
+ elements.addAll(child.references.filterIsInstance<ArnReference >())
179
+
180
+ return @PsiElementProcessor true
181
+ }
182
+ )
183
+
184
+ assertThat(elements).hasSize(1 ).allSatisfy {
185
+ assertThat(it).isInstanceOf(ArnReference ::class .java)
186
+ }
187
+ }
188
+ }
159
189
}
You can’t perform that action at this time.
0 commit comments