From d1dd6c4e97cfaba5b4e443c2adc411bf0a0d361d Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 26 May 2017 14:36:15 +0300 Subject: [PATCH] project model: added method to replace all exclude patterns --- .../intellij/openapi/roots/ContentEntry.java | 1 + .../openapi/roots/impl/ContentEntryImpl.java | 18 +++++++++++++++++- .../impl/module/content/JpsContentEntry.java | 11 +++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/platform/projectModel-api/src/com/intellij/openapi/roots/ContentEntry.java b/platform/projectModel-api/src/com/intellij/openapi/roots/ContentEntry.java index a3d181a6ed22..9a1dc801ee03 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/roots/ContentEntry.java +++ b/platform/projectModel-api/src/com/intellij/openapi/roots/ContentEntry.java @@ -204,4 +204,5 @@ public interface ContentEntry extends Synthetic { void addExcludePattern(@NotNull String pattern); void removeExcludePattern(@NotNull String pattern); + void setExcludePatterns(@NotNull List patterns); } diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ContentEntryImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ContentEntryImpl.java index e8a0846fd2d9..c6c4aa5503fd 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ContentEntryImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ContentEntryImpl.java @@ -319,7 +319,7 @@ public class ContentEntryImpl extends RootModelComponentBase implements ContentE @NotNull @Override public List getExcludePatterns() { - return myExcludePatterns != null ? myExcludePatterns : Collections.emptyList(); + return myExcludePatterns != null ? Collections.unmodifiableList(myExcludePatterns) : Collections.emptyList(); } @Override @@ -340,6 +340,22 @@ public class ContentEntryImpl extends RootModelComponentBase implements ContentE } } + @Override + public void setExcludePatterns(@NotNull List patterns) { + if (patterns.isEmpty()) { + myExcludePatterns = null; + } + else { + if (myExcludePatterns == null) { + myExcludePatterns = new SmartList<>(); + } + else { + myExcludePatterns.clear(); + } + myExcludePatterns.addAll(patterns); + } + } + private ExcludeFolder addExcludeFolder(ExcludeFolder f) { Disposer.register(this, (Disposable)f); myExcludeFolders.add(f); diff --git a/platform/projectModel-impl/src/com/intellij/project/model/impl/module/content/JpsContentEntry.java b/platform/projectModel-impl/src/com/intellij/project/model/impl/module/content/JpsContentEntry.java index 7ed9082f26e6..f39a8fac9b67 100644 --- a/platform/projectModel-impl/src/com/intellij/project/model/impl/module/content/JpsContentEntry.java +++ b/platform/projectModel-impl/src/com/intellij/project/model/impl/module/content/JpsContentEntry.java @@ -312,6 +312,17 @@ public class JpsContentEntry implements ContentEntry, Disposable { myModule.removeExcludePattern(getUrl(), pattern); } + @Override + public void setExcludePatterns(@NotNull List patterns) { + for (String pattern : myExcludePatterns) { + myModule.removeExcludePattern(getUrl(), pattern); + } + myExcludePatterns.clear(); + for (String pattern : patterns) { + addExcludePattern(pattern); + } + } + @Override public boolean isSynthetic() { return false;