From 30c369a7d711c7361be8f8b48a4ed1ba1b266249 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 17 Nov 2009 13:44:14 +0300 Subject: [PATCH] ensure dispose, assert double dispose --- platform/lang-api/src/com/intellij/facet/Facet.java | 16 ++++++++++------ .../src/com/intellij/facet/FacetManagerImpl.java | 4 ---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/platform/lang-api/src/com/intellij/facet/Facet.java b/platform/lang-api/src/com/intellij/facet/Facet.java index 89af1731ed..61a68e9438 100644 --- a/platform/lang-api/src/com/intellij/facet/Facet.java +++ b/platform/lang-api/src/com/intellij/facet/Facet.java @@ -17,6 +17,7 @@ package com.intellij.facet; import com.intellij.openapi.Disposable; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.util.UserDataHolder; import com.intellij.openapi.module.Module; @@ -31,19 +32,21 @@ import org.jetbrains.annotations.NotNull; */ public class Facet extends UserDataHolderBase implements UserDataHolder, Disposable { public static final Facet[] EMPTY_ARRAY = new Facet[0]; - private final @NotNull FacetType myFacetType; - private final @NotNull Module myModule; - private final @NotNull C myConfiguration; + @NotNull private final FacetType myFacetType; + @NotNull private final Module myModule; + @NotNull private final C myConfiguration; private final Facet myUnderlyingFacet; private String myName; private boolean myImplicit; + private boolean isDisposed; - public Facet(@NotNull final FacetType facetType, @NotNull final Module module, final @NotNull String name, @NotNull final C configuration, Facet underlyingFacet) { + public Facet(@NotNull final FacetType facetType, @NotNull final Module module, @NotNull final String name, @NotNull final C configuration, Facet underlyingFacet) { myName = name; myFacetType = facetType; myModule = module; myConfiguration = configuration; myUnderlyingFacet = underlyingFacet; + Disposer.register(myModule, this); } @NotNull @@ -91,8 +94,9 @@ public class Facet extends UserDataHolderBase impl public void disposeFacet() { } - public final void dispose() { + assert !isDisposed; + isDisposed = true; disposeFacet(); } @@ -113,7 +117,7 @@ public class Facet extends UserDataHolderBase impl /** * Use {@link com.intellij.facet.ModifiableFacetModel#rename} to rename facets */ - final void setName(final @NotNull String name) { + final void setName(@NotNull final String name) { myName = name; } diff --git a/platform/lang-impl/src/com/intellij/facet/FacetManagerImpl.java b/platform/lang-impl/src/com/intellij/facet/FacetManagerImpl.java index 2c5be630c7..76d88df7ab 100644 --- a/platform/lang-impl/src/com/intellij/facet/FacetManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/facet/FacetManagerImpl.java @@ -123,7 +123,6 @@ public class FacetManagerImpl extends FacetManager implements ModuleComponent, P public F createFacet(@NotNull final FacetType type, @NotNull final String name, @NotNull final C cofiguration, @Nullable final Facet underlying) { final F facet = type.createFacet(myModule, name, cofiguration, underlying); - Disposer.register(myModule, facet); assertTrue(facet.getModule() == myModule, facet, "module"); assertTrue(facet.getConfiguration() == cofiguration, facet, "configuration"); assertTrue(Comparing.equal(facet.getName(), name), facet, "name"); @@ -430,9 +429,6 @@ public class FacetManagerImpl extends FacetManager implements ModuleComponent, P } public void disposeComponent() { - for (Facet facet : getAllFacets()) { - Disposer.dispose(facet); - } } private static class FacetManagerModel extends FacetModelBase { -- 2.11.4.GIT