diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2020-12-07 15:52:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-07 15:52:52 +0100 |
commit | f561afbb3620b796d7321cde8c11d75a6bc6b2cf (patch) | |
tree | 69b7afbf913d23cb65909065b092d7e77e70a837 /component | |
parent | 339996348953bc9661c9cef12af7e944f9f66bc8 (diff) |
Revert "Revert "Always deconstruct in reverse creation order, including Provider objects""
Diffstat (limited to 'component')
-rw-r--r-- | component/abi-spec.json | 16 | ||||
-rw-r--r-- | component/src/main/java/com/yahoo/component/AbstractComponent.java | 3 | ||||
-rw-r--r-- | component/src/main/java/com/yahoo/component/Deconstructable.java | 13 |
3 files changed, 30 insertions, 2 deletions
diff --git a/component/abi-spec.json b/component/abi-spec.json index 5665075f1f2..2dfa3e0d71d 100644 --- a/component/abi-spec.json +++ b/component/abi-spec.json @@ -2,7 +2,8 @@ "com.yahoo.component.AbstractComponent": { "superClass": "java.lang.Object", "interfaces": [ - "com.yahoo.component.Component" + "com.yahoo.component.Component", + "com.yahoo.component.Deconstructable" ], "attributes": [ "public" @@ -105,6 +106,19 @@ ], "fields": [] }, + "com.yahoo.component.Deconstructable": { + "superClass": "java.lang.Object", + "interfaces": [], + "attributes": [ + "public", + "interface", + "abstract" + ], + "methods": [ + "public abstract void deconstruct()" + ], + "fields": [] + }, "com.yahoo.component.Version": { "superClass": "java.lang.Object", "interfaces": [ diff --git a/component/src/main/java/com/yahoo/component/AbstractComponent.java b/component/src/main/java/com/yahoo/component/AbstractComponent.java index fcaa1e62d56..18a19f3e238 100644 --- a/component/src/main/java/com/yahoo/component/AbstractComponent.java +++ b/component/src/main/java/com/yahoo/component/AbstractComponent.java @@ -11,7 +11,7 @@ import java.lang.reflect.Method; * * @author bratseth */ -public class AbstractComponent implements Component { +public class AbstractComponent implements Component, Deconstructable { private static final MethodCache deconstructMethods = new MethodCache("deconstruct"); @@ -129,6 +129,7 @@ public class AbstractComponent implements Component { * <p> * This default implementation does nothing. */ + @Override public void deconstruct() { } /** diff --git a/component/src/main/java/com/yahoo/component/Deconstructable.java b/component/src/main/java/com/yahoo/component/Deconstructable.java new file mode 100644 index 00000000000..4da39cd3420 --- /dev/null +++ b/component/src/main/java/com/yahoo/component/Deconstructable.java @@ -0,0 +1,13 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.component; + +/** + * A component in the component graph that should be deconstructed, to release resources. + * + * @author jonmv + */ +public interface Deconstructable { + + void deconstruct(); + +} |