createEditors - add NotNull

GitOrigin-RevId: 98a04ce6c91bd16f9ffee3f5b17d37b43e57e5e1
This commit is contained in:
Vladimir Krivosheev
2025-06-04 08:41:07 +02:00
committed by intellij-monorepo-bot
parent 6cfd9eb094
commit 74279330fe
8 changed files with 36 additions and 45 deletions

View File

@@ -1,33 +1,19 @@
/*
* Copyright 2000-2009 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.
*/
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.roots.ui.configuration;
import com.intellij.openapi.module.*;
import com.intellij.openapi.module.Module;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class DefaultModuleEditorsProvider implements ModuleConfigurationEditorProvider {
final class DefaultModuleEditorsProvider implements ModuleConfigurationEditorProvider {
@Override
public ModuleConfigurationEditor[] createEditors(ModuleConfigurationState state) {
public @NotNull ModuleConfigurationEditor @NotNull [] createEditors(@NotNull ModuleConfigurationState state) {
Module module = state.getCurrentRootModel().getModule();
ModuleType<?> moduleType = ModuleType.get(module);
if (!(moduleType instanceof JavaModuleType) &&
(!GeneralModuleType.INSTANCE.equals(moduleType))) {
if (!(moduleType instanceof JavaModuleType) && !GeneralModuleType.INSTANCE.equals(moduleType)) {
return ModuleConfigurationEditor.EMPTY;
}

View File

@@ -158,9 +158,7 @@ public abstract class ModuleEditor implements Place.Navigator, Disposable {
return false;
}
private void createEditors(@Nullable Module module) {
if (module == null) return;
private void createEditors(@NotNull Module module) {
ModuleConfigurationState state = createModuleConfigurationState();
for (ModuleConfigurationEditorProvider provider : EP_NAME.getExtensionList(module)) {
ModuleConfigurationEditor[] editors = provider.createEditors(state);
@@ -218,12 +216,16 @@ public abstract class ModuleEditor implements Place.Navigator, Disposable {
}
private @NotNull JPanel createPanel() {
getModifiableRootModel(); //initialize model if needed
// initialize model if needed
getModifiableRootModel();
getModifiableRootModelProxy();
myGenericSettingsPanel = new ModuleEditorPanel();
createEditors(getModule());
Module module = getModule();
if (module != null) {
createEditors(module);
}
final JComponent component = createCenterPanel();
myGenericSettingsPanel.add(component, BorderLayout.CENTER);

View File

@@ -2,6 +2,7 @@
package com.intellij.openapi.roots.ui.configuration;
import com.intellij.openapi.module.ModuleConfigurationEditor;
import org.jetbrains.annotations.NotNull;
/**
* Implement this interface to provide tabs for a module editor in 'Project Structure' dialog. The implementation should be registered in your {@code plugin.xml}:
@@ -12,5 +13,5 @@ import com.intellij.openapi.module.ModuleConfigurationEditor;
* </pre>
*/
public interface ModuleConfigurationEditorProvider {
ModuleConfigurationEditor[] createEditors(ModuleConfigurationState state);
@NotNull ModuleConfigurationEditor @NotNull [] createEditors(@NotNull ModuleConfigurationState state);
}

View File

@@ -1,15 +1,14 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.module;
import com.intellij.openapi.roots.ui.configuration.CommonContentEntriesEditor;
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationEditorProvider;
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationState;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
@ApiStatus.Internal
public final class WebModuleConfigurationEditorProvider implements ModuleConfigurationEditorProvider {
final class WebModuleConfigurationEditorProvider implements ModuleConfigurationEditorProvider {
@Override
public ModuleConfigurationEditor[] createEditors(final ModuleConfigurationState state) {
public @NotNull ModuleConfigurationEditor @NotNull [] createEditors(@NotNull ModuleConfigurationState state) {
Module module = state.getCurrentRootModel().getModule();
if (!ModuleTypeWithWebFeatures.isAvailable(module)) {
return ModuleConfigurationEditor.EMPTY;

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
@file:Suppress("UsePropertyAccessSyntax")
package com.intellij.ide.plugins
@@ -843,7 +843,7 @@ class DynamicPluginsTest {
val listenerDisposable = Disposer.newDisposable()
val checked = AtomicInteger()
Configurable.PROJECT_CONFIGURABLE.addChangeListener(project, Runnable {
Configurable.PROJECT_CONFIGURABLE.addChangeListener(project, {
checked.incrementAndGet()
}, listenerDisposable)
@@ -1134,7 +1134,7 @@ private class MyRunnable : Runnable {
}
private class MyModuleConfigurationEditorProvider : ModuleConfigurationEditorProvider {
override fun createEditors(state: ModuleConfigurationState?): Array<ModuleConfigurationEditor> = arrayOf()
override fun createEditors(state: ModuleConfigurationState): Array<ModuleConfigurationEditor> = emptyArray()
}
private inline fun runAndCheckThatNoNewPlugins(block: () -> Unit) {

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.idea.devkit.module;
import com.intellij.openapi.module.Module;
@@ -7,6 +7,7 @@ import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.roots.ui.configuration.DefaultModuleConfigurationEditorFactory;
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationEditorProvider;
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.devkit.build.PluginModuleBuildConfEditor;
import java.util.ArrayList;
@@ -15,7 +16,7 @@ import java.util.List;
final class PluginModuleEditorsProvider implements ModuleConfigurationEditorProvider {
@Override
public ModuleConfigurationEditor[] createEditors(ModuleConfigurationState state) {
public @NotNull ModuleConfigurationEditor @NotNull [] createEditors(@NotNull ModuleConfigurationState state) {
final Module module = state.getCurrentRootModel().getModule();
if (ModuleType.get(module) != PluginModuleType.getInstance()) return ModuleConfigurationEditor.EMPTY;

View File

@@ -1,5 +1,4 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.roots.ui
import com.intellij.openapi.module.ModuleConfigurationEditor
@@ -11,7 +10,7 @@ import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY
import org.jetbrains.kotlin.idea.base.facet.platform.platform
import org.jetbrains.kotlin.platform.jvm.isJvm
class NonJvmKotlinModuleEditorsProvider : ModuleConfigurationEditorProviderEx {
private class NonJvmKotlinModuleEditorsProvider : ModuleConfigurationEditorProviderEx {
override fun isCompleteEditorSet() = true
override fun createEditors(state: ModuleConfigurationState): Array<ModuleConfigurationEditor> {

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.python.community.plugin.java.facet;
import com.intellij.openapi.module.Module;
@@ -8,19 +8,22 @@ import com.intellij.openapi.roots.ui.configuration.DefaultModuleConfigurationEdi
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationEditorProvider;
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationState;
import com.jetbrains.python.module.PyContentEntriesEditor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.java.JavaSourceRootType;
import java.util.ArrayList;
import java.util.List;
final class PythonModuleConfigurationEditorProvider implements ModuleConfigurationEditorProvider {
@Override
public ModuleConfigurationEditor[] createEditors(final ModuleConfigurationState state) {
final Module module = state.getCurrentRootModel().getModule();
if (!(ModuleType.get(module) instanceof PythonModuleType)) return ModuleConfigurationEditor.EMPTY;
final DefaultModuleConfigurationEditorFactory editorFactory = DefaultModuleConfigurationEditorFactory.getInstance();
final List<ModuleConfigurationEditor> editors = new ArrayList<>();
public @NotNull ModuleConfigurationEditor @NotNull [] createEditors(@NotNull ModuleConfigurationState state) {
Module module = state.getCurrentRootModel().getModule();
if (!(ModuleType.get(module) instanceof PythonModuleType)) {
return ModuleConfigurationEditor.EMPTY;
}
DefaultModuleConfigurationEditorFactory editorFactory = DefaultModuleConfigurationEditorFactory.getInstance();
List<ModuleConfigurationEditor> editors = new ArrayList<>();
editors.add(new PyContentEntriesEditor(module, state, false, JavaSourceRootType.SOURCE));
editors.add(editorFactory.createClasspathEditor(state));
return editors.toArray(ModuleConfigurationEditor.EMPTY);