Switch SchemaUnawareCodec to an abstract class
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / CodecOpaqueObject.java
1 /*
2  * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.mdsal.binding.dom.codec.impl;
9
10 import static java.util.Objects.requireNonNull;
11
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;
17
18 /**
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.
22  *
23  * @param <T> OpaqueObject type
24  */
25 @Beta
26 public abstract class CodecOpaqueObject<T extends OpaqueObject<T>> extends AbstractOpaqueObject<T> {
27     private final @NonNull OpaqueData<?> value;
28
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);
32     }
33
34     @Override
35     public final OpaqueData<?> getValue() {
36         return value;
37     }
38 }