diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-12-07 13:37:24 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-12-07 13:37:24 +0100 |
commit | bdb102917700d9f698423b5a1d62ead8a06f5b5a (patch) | |
tree | 1daacf13716d072b1a5578ae03fb35ae2e61a81f /component | |
parent | c7548568b93ac5552667ca34a754bf6b36b5033e (diff) |
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(); + +} |