From c8a049d2211f58b19b19e06a87fb429f23043796 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Thu, 18 Jan 2018 18:10:10 +0100 Subject: [PATCH] ContainerUtil.unmodifiableOrEmpty* utility methods --- .../util/containers/ContainerUtil.java | 63 ++++++++++++++----- 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java index d18687234437..83d6f3b0f523 100644 --- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java +++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java @@ -1,16 +1,4 @@ -// Copyright 2000-2017 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-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 com.intellij.util.containers; import com.intellij.openapi.Disposable; @@ -25,8 +13,6 @@ import java.lang.reflect.Array; import java.util.*; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.CopyOnWriteArrayList; @@ -219,6 +205,53 @@ public class ContainerUtil extends ContainerUtilRt { } } + @NotNull + @Contract(pure = true) + public static Collection unmodifiableOrEmptyCollection(Collection original) { + int size = original.size(); + if (size == 0) { + return emptyList(); + } + else { + return Collections.unmodifiableCollection(original); + } + } + + @NotNull + @Contract(pure = true) + public static List unmodifiableOrEmptyList(List original) { + int size = original.size(); + if (size == 0) { + return emptyList(); + } + else { + return Collections.unmodifiableList(original); + } + } + + @NotNull + @Contract(pure = true) + public static Set unmodifiableOrEmptySet(Set original) { + int size = original.size(); + if (size == 0) { + return Collections.emptySet(); + } + else { + return Collections.unmodifiableSet(original); + } + } + + @NotNull + @Contract(pure = true) + public static Map unmodifiableOrEmptyMap(Map original) { + int size = original.size(); + if (size == 0) { + return Collections.emptyMap(); + } + else { + return Collections.unmodifiableMap(original); + } + } @NotNull @Contract(pure=true)