X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-codec%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fcodec%2Fimpl%2FCommonDataObjectCodecPrototype.java;h=ec3a2ea64c5ae04ae74e0dc1d5148a9b714cadc1;hb=refs%2Fchanges%2F42%2F109742%2F3;hp=24340e46527227816b59f5efb9a5d575a4d349f4;hpb=82d49007372df18b968afa6d297c991b91bf1fc2;p=mdsal.git diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CommonDataObjectCodecPrototype.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CommonDataObjectCodecPrototype.java index 24340e4652..ec3a2ea64c 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CommonDataObjectCodecPrototype.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CommonDataObjectCodecPrototype.java @@ -9,36 +9,18 @@ package org.opendaylight.mdsal.binding.dom.codec.impl; import static java.util.Objects.requireNonNull; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import java.lang.invoke.MethodHandles; -import java.lang.invoke.VarHandle; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.runtime.api.CompositeRuntimeType; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.Item; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -abstract sealed class CommonDataObjectCodecPrototype implements CodecContextSupplier +abstract sealed class CommonDataObjectCodecPrototype + extends LazyCodecContextSupplier> permits AugmentationCodecPrototype, DataObjectCodecPrototype { - private static final VarHandle INSTANCE; - - static { - try { - INSTANCE = MethodHandles.lookup().findVarHandle(CommonDataObjectCodecPrototype.class, - "instance", CommonDataObjectCodecContext.class); - } catch (NoSuchFieldException | IllegalAccessException e) { - throw new ExceptionInInitializerError(e); - } - } - private final @NonNull T type; private final @NonNull CodecContextFactory factory; private final @NonNull Item bindingArg; - // Accessed via INSTANCE - @SuppressWarnings("unused") - @SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "https://github.com/spotbugs/spotbugs/issues/2749") - private volatile CommonDataObjectCodecContext instance; - CommonDataObjectCodecPrototype(final Item bindingArg, final T type, final CodecContextFactory factory) { this.bindingArg = requireNonNull(bindingArg); this.type = requireNonNull(type); @@ -62,19 +44,4 @@ abstract sealed class CommonDataObjectCodecPrototype get() { - final var existing = (CommonDataObjectCodecContext) INSTANCE.getAcquire(this); - return existing != null ? existing : loadInstance(); - } - - private @NonNull CommonDataObjectCodecContext loadInstance() { - final var tmp = createInstance(); - final var witness = (CommonDataObjectCodecContext) INSTANCE.compareAndExchangeRelease(this, null, tmp); - return witness == null ? tmp : witness; - } - - // This method must allow concurrent loading, i.e. nothing in it may have effects outside of the loaded object - abstract @NonNull CommonDataObjectCodecContext createInstance(); }