From fcfabbb8debb8f754d34e42341c1a51955e8cb29 Mon Sep 17 00:00:00 2001 From: irengrig Date: Tue, 7 Mar 2017 16:46:30 +0100 Subject: [PATCH] WEB-25752 webpack.conf.js: recognize exporting multiple configurations --- .../JsonBySchemaDocumentationProvider.java | 2 +- .../impl/JsonBySchemaObjectAnnotator.java | 4 +-- ...onBySchemaObjectCompletionContributor.java | 2 +- .../jsonSchema/impl/JsonLikePsiWalker.java | 2 -- .../impl/JsonLikePsiWalkerFactory.java | 28 +++++++++++++++++++ .../jsonSchema/impl/JsonSchemaType.java | 2 +- .../jsonSchema/impl/JsonSchemaWalker.java | 11 ++++---- .../src/META-INF/JsonPlugin.xml | 2 +- 8 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 json/src/com/jetbrains/jsonSchema/impl/JsonLikePsiWalkerFactory.java diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaDocumentationProvider.java b/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaDocumentationProvider.java index 9bc5d475610c..92712e42e767 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaDocumentationProvider.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaDocumentationProvider.java @@ -44,7 +44,7 @@ public class JsonBySchemaDocumentationProvider implements DocumentationProvider @Nullable @Override public String generateDoc(PsiElement element, @Nullable PsiElement originalElement) { - final JsonLikePsiWalker walker = JsonSchemaWalker.getWalker(element); + final JsonLikePsiWalker walker = JsonSchemaWalker.getWalker(element, myRootSchema); if (walker == null) return null; if (JsonSchemaFileType.INSTANCE.equals(element.getContainingFile().getFileType())) { diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectAnnotator.java b/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectAnnotator.java index ffb9b2cff586..22723c4b4498 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectAnnotator.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectAnnotator.java @@ -52,7 +52,7 @@ public class JsonBySchemaObjectAnnotator implements Annotator { @Override public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) { - final JsonLikePsiWalker walker = JsonSchemaWalker.getWalker(element); + final JsonLikePsiWalker walker = JsonSchemaWalker.getWalker(element, myRootSchema); if (walker == null) return; final JsonPropertyAdapter firstProp = walker.getParentPropertyAdapter(element); @@ -66,7 +66,7 @@ public class JsonBySchemaObjectAnnotator implements Annotator { if (checkIfAlreadyProcessed(holder, firstProp.getDelegate())) return; final List checkers = new ArrayList<>(); - JsonSchemaWalker.findSchemasForAnnotation(firstProp.getDelegate(), JsonSchemaWalker.getWalker(element), new JsonSchemaWalker.CompletionSchemesConsumer() { + JsonSchemaWalker.findSchemasForAnnotation(firstProp.getDelegate(), JsonSchemaWalker.getWalker(element, myRootSchema), new JsonSchemaWalker.CompletionSchemesConsumer() { @Override public void consume(boolean isName, @NotNull JsonSchemaObject schema, diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectCompletionContributor.java b/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectCompletionContributor.java index 09f4820cb17f..6c7e5a70efa7 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectCompletionContributor.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonBySchemaObjectCompletionContributor.java @@ -98,7 +98,7 @@ class JsonBySchemaObjectCompletionContributor extends CompletionContributor { myOriginalPosition = originalPosition; myResultConsumer = resultConsumer; myVariants = new ArrayList<>(); - myWalker = JsonSchemaWalker.getWalker(myPosition); + myWalker = JsonSchemaWalker.getWalker(myPosition, myRootSchema); myWrapInQuotes = myWalker.isNameQuoted() && !(position.getParent() instanceof JsonStringLiteral); myInsideStringLiteral = position.getParent() instanceof JsonStringLiteral; } diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonLikePsiWalker.java b/json/src/com/jetbrains/jsonSchema/impl/JsonLikePsiWalker.java index a51a839d31fe..36e516bc7c3d 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonLikePsiWalker.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonLikePsiWalker.java @@ -15,7 +15,6 @@ */ package com.jetbrains.jsonSchema.impl; -import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,7 +26,6 @@ import java.util.Set; * @author Irina.Chernushina on 2/15/2017. */ public interface JsonLikePsiWalker { - ExtensionPointName EXTENSION_POINT_NAME = ExtensionPointName.create("Json.Like.Psi.Walker"); boolean handles(@NotNull PsiElement element); boolean isName(PsiElement checkable); boolean isPropertyWithValue(@NotNull PsiElement element); diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonLikePsiWalkerFactory.java b/json/src/com/jetbrains/jsonSchema/impl/JsonLikePsiWalkerFactory.java new file mode 100644 index 000000000000..b462ed4242df --- /dev/null +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonLikePsiWalkerFactory.java @@ -0,0 +1,28 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.jetbrains.jsonSchema.impl; + +import com.intellij.openapi.extensions.ExtensionPointName; +import org.jetbrains.annotations.NotNull; + +/** + * @author Irina.Chernushina on 3/7/2017. + */ +public interface JsonLikePsiWalkerFactory { + ExtensionPointName EXTENSION_POINT_NAME = ExtensionPointName.create("Json.Like.Psi.Walker.Factory"); + + JsonLikePsiWalker create(@NotNull JsonSchemaObject schemaObject); +} diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaType.java b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaType.java index d75222935aec..ac814fea7c56 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaType.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaType.java @@ -3,7 +3,7 @@ package com.jetbrains.jsonSchema.impl; /** * @author Irina.Chernushina on 7/15/2015. */ -enum JsonSchemaType { +public enum JsonSchemaType { _string, _number, _integer, _object, _array, _boolean, _null, _any; public String getName() { diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaWalker.java b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaWalker.java index f4ac9b091afd..f4767176ce84 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaWalker.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaWalker.java @@ -285,17 +285,18 @@ public class JsonSchemaWalker { return true; } - public static JsonLikePsiWalker getWalker(@NotNull final PsiElement element) { - return getJsonLikeThing(element, walker -> walker); + public static JsonLikePsiWalker getWalker(@NotNull final PsiElement element, JsonSchemaObject schemaObject) { + return getJsonLikeThing(element, walker -> walker, schemaObject); } @Nullable private static T getJsonLikeThing(@NotNull final PsiElement element, - @NotNull Convertor convertor) { + @NotNull Convertor convertor, + JsonSchemaObject schemaObject) { final List list = new ArrayList<>(); list.add(JSON_ORIGINAL_PSI_WALKER); - final JsonLikePsiWalker[] extensions = Extensions.getExtensions(JsonLikePsiWalker.EXTENSION_POINT_NAME); - list.addAll(Arrays.asList(extensions)); + final JsonLikePsiWalkerFactory[] extensions = Extensions.getExtensions(JsonLikePsiWalkerFactory.EXTENSION_POINT_NAME); + list.addAll(Arrays.stream(extensions).map(extension -> extension.create(schemaObject)).collect(Collectors.toList())); for (JsonLikePsiWalker walker : list) { if (walker.handles(element)) return convertor.convert(walker); } diff --git a/platform/platform-resources/src/META-INF/JsonPlugin.xml b/platform/platform-resources/src/META-INF/JsonPlugin.xml index f14d7632decc..38fa5cb135a4 100644 --- a/platform/platform-resources/src/META-INF/JsonPlugin.xml +++ b/platform/platform-resources/src/META-INF/JsonPlugin.xml @@ -91,7 +91,7 @@ - + \ No newline at end of file