22 * Copyright © Magento, Inc. All rights reserved.
33 * See COPYING.txt for license details.
44 */
5+
56package com .magento .idea .magento2plugin .stubs .indexes .graphql ;
67
78import com .intellij .lang .jsgraphql .GraphQLFileType ;
8- import com .intellij .lang .jsgraphql .psi .*;
9+ import com .intellij .lang .jsgraphql .psi .GraphQLArgument ;
10+ import com .intellij .lang .jsgraphql .psi .GraphQLArguments ;
11+ import com .intellij .lang .jsgraphql .psi .GraphQLDirective ;
12+ import com .intellij .lang .jsgraphql .psi .GraphQLFieldDefinition ;
13+ import com .intellij .lang .jsgraphql .psi .GraphQLFieldsDefinition ;
14+ import com .intellij .lang .jsgraphql .psi .GraphQLFile ;
15+ import com .intellij .lang .jsgraphql .psi .GraphQLInterfaceTypeDefinition ;
16+ import com .intellij .lang .jsgraphql .psi .GraphQLObjectTypeDefinition ;
17+ import com .intellij .lang .jsgraphql .psi .GraphQLQuotedString ;
918import com .intellij .openapi .vfs .VirtualFile ;
1019import com .intellij .psi .PsiElement ;
1120import com .intellij .psi .PsiFile ;
1221import com .intellij .psi .PsiManager ;
1322import com .intellij .psi .search .GlobalSearchScope ;
14- import com .intellij .util .indexing .*;
23+ import com .intellij .util .indexing .DataIndexer ;
24+ import com .intellij .util .indexing .FileBasedIndex ;
25+ import com .intellij .util .indexing .FileContent ;
26+ import com .intellij .util .indexing .ID ;
27+ import com .intellij .util .indexing .ScalarIndexExtension ;
1528import com .intellij .util .io .EnumeratorStringDescriptor ;
1629import com .intellij .util .io .KeyDescriptor ;
1730import com .jetbrains .php .lang .psi .elements .PhpClass ;
1831import com .magento .idea .magento2plugin .util .magento .graphql .GraphQlUtil ;
32+ import java .util .ArrayList ;
33+ import java .util .Collection ;
34+ import java .util .HashMap ;
35+ import java .util .List ;
36+ import java .util .Map ;
1937import org .jetbrains .annotations .NotNull ;
20- import java .util .*;
2138
2239public class GraphQlResolverIndex extends ScalarIndexExtension <String > {
2340 public static final ID <String , Void > KEY
@@ -31,50 +48,57 @@ public ID<String, Void> getName() {
3148
3249 @ NotNull
3350 @ Override
51+ @ SuppressWarnings ({"PMD.CognitiveComplexity" , "PMD.NPathComplexity" })
3452 public DataIndexer <String , Void , FileContent > getIndexer () {
3553 return inputData -> {
36- Map <String , Void > map = new HashMap <>();
54+ final Map <String , Void > map = new HashMap <>();
3755
38- GraphQLFile graphQLFile = (GraphQLFile ) inputData .getPsiFile ();
39- PsiElement [] children = graphQLFile .getChildren ();
40- for (PsiElement child : children ) {
41- if (!(child instanceof GraphQLObjectTypeDefinition ) && !(child instanceof GraphQLInterfaceTypeDefinition )) {
56+ final GraphQLFile graphQLFile = (GraphQLFile ) inputData .getPsiFile ();
57+ final PsiElement [] children = graphQLFile .getChildren ();
58+ for (final PsiElement child : children ) {
59+ if (!(child instanceof GraphQLObjectTypeDefinition )
60+ && !(child instanceof GraphQLInterfaceTypeDefinition )) {
4261 continue ;
4362 }
44- PsiElement [] objectChildren = child .getChildren ();
45- for (PsiElement objectChild : objectChildren ) {
63+ final PsiElement [] objectChildren = child .getChildren ();
64+ for (final PsiElement objectChild : objectChildren ) {
4665 if (!(objectChild instanceof GraphQLFieldsDefinition )) {
4766 continue ;
4867 }
49- PsiElement [] fieldsChildren = objectChild .getChildren ();
50- for (PsiElement fieldsChild : fieldsChildren ) {
68+ final PsiElement [] fieldsChildren = objectChild .getChildren ();
69+ for (final PsiElement fieldsChild : fieldsChildren ) {
5170 if (!(fieldsChild instanceof GraphQLFieldDefinition )) {
5271 continue ;
5372 }
54- PsiElement [] fieldChildren = fieldsChild .getChildren ();
55- for (PsiElement fieldChild : fieldChildren ) {
73+ final PsiElement [] fieldChildren = fieldsChild .getChildren ();
74+ for (final PsiElement fieldChild : fieldChildren ) {
5675 if (!(fieldChild instanceof GraphQLDirective )) {
5776 continue ;
5877 }
5978 if (!fieldChild .getText ().startsWith ("@resolver" )) {
6079 continue ;
6180 }
6281
63- PsiElement [] directiveChildren = fieldChild .getChildren ();
82+ final PsiElement [] directiveChildren = fieldChild .getChildren ();
6483
65- for (PsiElement directiveChild : directiveChildren ) {
84+ for (final PsiElement directiveChild : directiveChildren ) {
6685 if (!(directiveChild instanceof GraphQLArguments )) {
6786 continue ;
6887 }
6988
70- PsiElement [] argumentsChildren = directiveChild .getChildren ();
71- for (PsiElement argumentsChild : argumentsChildren ) {
89+ final PsiElement [] argumentsChildren = directiveChild .getChildren ();
90+ for (final PsiElement argumentsChild : argumentsChildren ) {
7291 if (!(argumentsChild instanceof GraphQLArgument )) {
7392 continue ;
7493 }
7594
76- PsiElement argumentStringValue = GraphQlUtil .fetchResolverQuotedStringFromArgument (argumentsChild );
77- if (argumentStringValue == null ) continue ;
95+ final PsiElement argumentStringValue =
96+ GraphQlUtil .fetchResolverQuotedStringFromArgument (
97+ argumentsChild
98+ );
99+ if (argumentStringValue == null ) {
100+ continue ;
101+ }
78102
79103 String resolverFQN = argumentStringValue .getText ();
80104 if (resolverFQN == null ) {
@@ -104,8 +128,8 @@ public KeyDescriptor<String> getKeyDescriptor() {
104128 @ NotNull
105129 @ Override
106130 public FileBasedIndex .InputFilter getInputFilter () {
107- return virtualFile -> ( virtualFile .getFileType () == GraphQLFileType .INSTANCE
108- && virtualFile . getName (). equals ( "schema.graphqls" ));
131+ return virtualFile -> virtualFile .getFileType () == GraphQLFileType .INSTANCE
132+ && "schema.graphqls" . equals ( virtualFile . getName ( ));
109133 }
110134
111135 @ Override
@@ -118,30 +142,44 @@ public int getVersion() {
118142 return 1 ;
119143 }
120144
121-
122- public static List <GraphQLQuotedString > getGraphQLUsages (@ NotNull PhpClass phpClass ) {
123- List <GraphQLQuotedString > quotedStrings = new ArrayList <>();
124-
125- String classFqn = phpClass .getFQN ();
126- Collection <VirtualFile > containingFiles = FileBasedIndex
127- .getInstance ().getContainingFiles (KEY , classFqn , GlobalSearchScope .allScope (phpClass .getProject ()));
128-
129- PsiManager psiManager = PsiManager .getInstance (phpClass .getProject ());
130- for (VirtualFile virtualFile : containingFiles ) {
145+ /**
146+ * Get GraphQL Usages.
147+ *
148+ * @param phpClass PhpClass
149+ *
150+ * @return List[GraphQLQuotedString]
151+ */
152+ public static List <GraphQLQuotedString > getGraphQLUsages (final @ NotNull PhpClass phpClass ) {
153+ final List <GraphQLQuotedString > quotedStrings = new ArrayList <>();
154+
155+ final String classFqn = phpClass .getFQN ();
156+ final Collection <VirtualFile > containingFiles = FileBasedIndex
157+ .getInstance ().getContainingFiles (
158+ KEY ,
159+ classFqn ,
160+ GlobalSearchScope .allScope (phpClass .getProject ())
161+ );
162+
163+ final PsiManager psiManager = PsiManager .getInstance (phpClass .getProject ());
164+ for (final VirtualFile virtualFile : containingFiles ) {
131165 final PsiFile fileCandidate = psiManager .findFile (virtualFile );
132166
133167 if (!(fileCandidate instanceof GraphQLFile )) {
134168 continue ;
135169 }
136- GraphQLFile file = (GraphQLFile ) fileCandidate ;
137- PsiElement [] children = file .getChildren ();
170+ final GraphQLFile file = (GraphQLFile ) fileCandidate ;
171+ final PsiElement [] children = file .getChildren ();
138172 findMatchingQuotedString (children , classFqn , quotedStrings );
139173 }
140174 return quotedStrings ;
141175 }
142176
143- private static PsiElement findMatchingQuotedString (PsiElement [] psiElements , String classFqn , List <GraphQLQuotedString > quotedStrings ) {
144- for (PsiElement element : psiElements ) {
177+ private static PsiElement findMatchingQuotedString (
178+ final PsiElement [] psiElements ,
179+ final String classFqn ,
180+ final List <GraphQLQuotedString > quotedStrings
181+ ) {
182+ for (final PsiElement element : psiElements ) {
145183 if (!(element instanceof GraphQLArgument ) && element .getChildren ().length == 0 ) {
146184 continue ;
147185 }
@@ -150,16 +188,19 @@ private static PsiElement findMatchingQuotedString(PsiElement[] psiElements, Str
150188 continue ;
151189 }
152190
153- PsiElement argumentStringValue = GraphQlUtil .fetchResolverQuotedStringFromArgument (element );
154- if (argumentStringValue == null ) continue ;
191+ final PsiElement argumentStringValue =
192+ GraphQlUtil .fetchResolverQuotedStringFromArgument (element );
193+ if (argumentStringValue == null ) {
194+ continue ;
195+ }
155196
156197 String resolverFQN = argumentStringValue .getText ();
157198 if (resolverFQN == null ) {
158199 return null ;
159200 }
160-
201+
161202 resolverFQN = GraphQlUtil .resolverStringToPhpFQN (resolverFQN );
162-
203+
163204 if (!resolverFQN .equals (classFqn )) {
164205 continue ;
165206 }
0 commit comments