2 * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.mdsal.binding.dom.codec.impl;
10 import static java.util.Objects.requireNonNull;
12 import com.google.common.annotations.Beta;
13 import org.eclipse.jdt.annotation.NonNull;
14 import org.opendaylight.yangtools.yang.binding.AbstractOpaqueObject;
15 import org.opendaylight.yangtools.yang.binding.OpaqueData;
16 import org.opendaylight.yangtools.yang.binding.OpaqueObject;
19 * A base class for {@link OpaqueObject}s backed by {@link ForeignOpaqueData}. While this class is public, it not part
20 * of API surface and is an implementation detail. The only reason for it being public is that it needs to be accessible
21 * by code generated at runtime.
23 * @param <T> OpaqueObject type
26 public abstract class CodecOpaqueObject<T extends OpaqueObject<T>> extends AbstractOpaqueObject<T> {
27 private final @NonNull OpaqueData<?> value;
29 // This constructor is public so Javassist generates a public constructor and we do not need to muck
30 public CodecOpaqueObject(final OpaqueData<?> value) {
31 this.value = requireNonNull(value);
35 public final OpaqueData<?> getValue() {