From ee62e1573fced378d75e9749c74bbe49e0a07333 Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Fri, 26 Jul 2019 19:53:23 +0200 Subject: [PATCH] project model: extract an application service from ModifiableModelCommitter to replace it in new project model GitOrigin-RevId: fc05ab86d8b54020b1ebac60f9fdbb2e3629b8db --- .../src/META-INF/LangExtensions.xml | 3 +++ .../roots/impl/ModifiableModelCommitter.java | 20 +++++++++++++++++++ .../impl/ModifiableModelCommitterService.java | 19 ++++++++++++++++++ .../ModifiableModelCommitterServiceImpl.java | 11 +++++----- 4 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java create mode 100644 platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterService.java 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);