diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index 5304aaf5469b..1ed5227cb612 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -135,6 +135,9 @@ + + diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java new file mode 100644 index 000000000000..ba5f89b3911f --- /dev/null +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java @@ -0,0 +1,20 @@ +// Copyright 2000-2019 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 com.intellij.openapi.roots.impl; + +import com.intellij.openapi.module.ModifiableModuleModel; +import com.intellij.openapi.roots.ModifiableRootModel; +import org.jetbrains.annotations.NotNull; + +import java.util.Arrays; +import java.util.Collection; + +public class ModifiableModelCommitter { + public static void multiCommit(@NotNull ModifiableRootModel[] rootModels, @NotNull ModifiableModuleModel moduleModel) { + multiCommit(Arrays.asList(rootModels), moduleModel); + } + + public static void multiCommit(@NotNull Collection rootModels, + @NotNull ModifiableModuleModel moduleModel) { + ModifiableModelCommitterService.getInstance().multiCommit(rootModels, moduleModel); + } +} diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterService.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterService.java new file mode 100644 index 000000000000..0f65fa3dfa11 --- /dev/null +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterService.java @@ -0,0 +1,19 @@ +// Copyright 2000-2019 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 com.intellij.openapi.roots.impl; + +import com.intellij.openapi.components.ServiceManager; +import com.intellij.openapi.module.ModifiableModuleModel; +import com.intellij.openapi.roots.ModifiableRootModel; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; + +@ApiStatus.Internal +public interface ModifiableModelCommitterService { + void multiCommit(@NotNull Collection rootModels, @NotNull ModifiableModuleModel moduleModel); + + static ModifiableModelCommitterService getInstance() { + return ServiceManager.getService(ModifiableModelCommitterService.class); + } +} diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterServiceImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterServiceImpl.java index 9935e04a92c4..e12fb2c245f5 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterServiceImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterServiceImpl.java @@ -13,18 +13,17 @@ import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.graph.GraphGenerator; import com.intellij.util.graph.InboundSemiGraph; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import java.util.*; -public class ModifiableModelCommitter { +@ApiStatus.Internal +public class ModifiableModelCommitterServiceImpl implements ModifiableModelCommitterService { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.module.impl.ModifiableModelCommitter"); - public static void multiCommit(@NotNull ModifiableRootModel[] rootModels, @NotNull ModifiableModuleModel moduleModel) { - multiCommit(Arrays.asList(rootModels), moduleModel); - } - - public static void multiCommit(@NotNull Collection rootModels, @NotNull ModifiableModuleModel moduleModel) { + @Override + public void multiCommit(@NotNull Collection rootModels, @NotNull ModifiableModuleModel moduleModel) { ApplicationManager.getApplication().assertWriteAccessAllowed(); final List modelsToCommit = getSortedChangedModels(rootModels, moduleModel);