X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-repo-spi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Frepo%2Fspi%2FSoftSchemaSourceCache.java;fp=yang%2Fyang-repo-spi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Frepo%2Fspi%2FSoftSchemaSourceCache.java;h=90abc12d9a831859008c0206f29eb9febf9c9c87;hb=04e2170a5aa0e292c3850b8358c396c099d3f920;hp=cdbc4b6889eaa78e92853b3c65b08edc26a76d98;hpb=cca8f2d7d2e6b2bfecdb925ff7e8da462cee6371;p=yangtools.git diff --git a/yang/yang-repo-spi/src/main/java/org/opendaylight/yangtools/yang/model/repo/spi/SoftSchemaSourceCache.java b/yang/yang-repo-spi/src/main/java/org/opendaylight/yangtools/yang/model/repo/spi/SoftSchemaSourceCache.java index cdbc4b6889..90abc12d9a 100644 --- a/yang/yang-repo-spi/src/main/java/org/opendaylight/yangtools/yang/model/repo/spi/SoftSchemaSourceCache.java +++ b/yang/yang-repo-spi/src/main/java/org/opendaylight/yangtools/yang/model/repo/spi/SoftSchemaSourceCache.java @@ -17,18 +17,18 @@ import java.lang.ref.SoftReference; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.opendaylight.yangtools.concepts.Registration; +import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier; +import org.opendaylight.yangtools.yang.model.api.source.SourceRepresentation; import org.opendaylight.yangtools.yang.model.repo.api.MissingSchemaSourceException; -import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation; -import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource.Costs; /** * A simple {@link AbstractSchemaSourceCache} maintaining soft references. * - * @param {@link SchemaSourceRepresentation} type stored in this cache + * @param {@link SourceRepresentation} type stored in this cache */ @Beta -public final class SoftSchemaSourceCache extends AbstractSchemaSourceCache +public final class SoftSchemaSourceCache extends AbstractSchemaSourceCache implements AutoCloseable { private static final Cleaner CLEANER = Cleaner.create(); @@ -74,11 +74,11 @@ public final class SoftSchemaSourceCache e return; } - final var id = source.getIdentifier(); + final var sourceId = source.sourceId(); final var ref = new SoftReference<>(source); while (true) { - final var prev = references.putIfAbsent(id, ref); + final var prev = references.putIfAbsent(sourceId, ref); if (prev == null) { // We have performed a fresh insert and need to add a cleanup break; @@ -90,15 +90,15 @@ public final class SoftSchemaSourceCache e } // Existing reference is dead, remove it and retry - references.remove(id, prev); + references.remove(sourceId, prev); } // We have populated a cache entry, register the source and a cleanup action - final var reg = register(id); + final var reg = register(sourceId); cleanables.put(reg, CLEANER.register(source, () -> { cleanables.remove(reg); reg.close(); - references.remove(id, ref); + references.remove(sourceId, ref); })); // Ensure 'source' is still reachable here. This is needed to ensure the cleanable action does not fire before