diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/ConstantSearchProvider.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/ConstantSearchProvider.java deleted file mode 100644 index 42bd0c4ebf46..000000000000 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/ConstantSearchProvider.java +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package org.jetbrains.jps.builders.java; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jps.builders.java.dependencyView.Callbacks; -import org.jetbrains.jps.incremental.CompileContext; - -/** - * Implement this interface to provide additional constant affection resolver that will be notified when a constant is changed. - * Implementations are registered as Java services, by creating a file - * META-INF/services/org.jetbrains.jps.builders.java.ConstantSearchProvider - * containing the qualified name of your implementation class. - */ -public interface ConstantSearchProvider { - @NotNull - Callbacks.ConstantAffectionResolver getConstantSearch(@NotNull CompileContext context); -} diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderExtension.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderExtension.java index 36ec22cf435a..b20ce706645f 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderExtension.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/JavaBuilderExtension.java @@ -16,6 +16,9 @@ package org.jetbrains.jps.builders.java; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jps.builders.java.dependencyView.Callbacks; +import org.jetbrains.jps.incremental.CompileContext; import org.jetbrains.jps.model.module.JpsModuleType; import java.io.File; @@ -43,4 +46,14 @@ public abstract class JavaBuilderExtension { public Set> getCompilableModuleTypes() { return Collections.emptySet(); } + + /** + * Override this method to provide additional constant search capabilities that would augment the logic already built into the java builder + * Results from ConstantAffectionResolver extensions will be combined with the results found by the java ConstantAffectionResolver. + * The implementation should expect asynchronous execution. + */ + @Nullable + public Callbacks.ConstantAffectionResolver getConstantSearch(CompileContext context) { + return null; + } } diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java index 144194214e25..0d6b7fbab995 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java @@ -28,7 +28,7 @@ import org.jetbrains.jps.builders.*; import org.jetbrains.jps.builders.impl.BuildOutputConsumerImpl; import org.jetbrains.jps.builders.impl.BuildTargetChunk; import org.jetbrains.jps.builders.impl.DirtyFilesHolderBase; -import org.jetbrains.jps.builders.java.ConstantSearchProvider; +import org.jetbrains.jps.builders.java.JavaBuilderExtension; import org.jetbrains.jps.builders.java.JavaBuilderUtil; import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor; import org.jetbrains.jps.builders.java.dependencyView.Callbacks; @@ -441,8 +441,11 @@ public class IncProjectBuilder { else { final List resolvers = getResolvers(); resolvers.add(javaResolver); - for (ConstantSearchProvider provider : JpsServiceManager.getInstance().getExtensions(ConstantSearchProvider.class)) { - resolvers.add(provider.getConstantSearch(context)); + for (JavaBuilderExtension provider : JpsServiceManager.getInstance().getExtensions(JavaBuilderExtension.class)) { + final Callbacks.ConstantAffectionResolver extResolver = provider.getConstantSearch(context); + if (extResolver != null) { + resolvers.add(extResolver); + } } JavaBuilderUtil.CONSTANT_SEARCH_SERVICE.set(context, resolvers.size() == 1? resolvers.get(0) : new CompositeConstantResolver(resolvers)); }