mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
review follow-up: move teh getConstantSearch() api to already existing JavaBuilderExtension
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -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<? extends JpsModuleType<?>> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Callbacks.ConstantAffectionResolver> 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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user