Remove OSGiBindingAdapterFactory
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / ConstantAdapterContext.java
1 /*
2  * Copyright (c) 2020 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.adapter;
9
10 import com.google.common.annotations.Beta;
11 import java.util.ServiceLoader;
12 import javax.inject.Inject;
13 import javax.inject.Singleton;
14 import org.eclipse.jdt.annotation.NonNull;
15 import org.kohsuke.MetaInfServices;
16 import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices;
17
18 /**
19  * A simple, constant implementation of the BlockingBindingNormalizer contract. This implementation is appropriate
20  * in contexts where the backing context cannot change.
21  */
22 @Beta
23 @MetaInfServices
24 @Singleton
25 public final class ConstantAdapterContext implements AdapterContext {
26     private final @NonNull CurrentAdapterSerializer serializer;
27
28     public ConstantAdapterContext() {
29         this(ServiceLoader.load(BindingDOMCodecServices.class).findFirst()
30             .orElseThrow(() -> new IllegalStateException("Cannot load BindingDOMCodecServices")));
31     }
32
33     @Inject
34     public ConstantAdapterContext(final BindingDOMCodecServices codec) {
35         this.serializer = new CurrentAdapterSerializer(codec);
36     }
37
38     @Override
39     public CurrentAdapterSerializer currentSerializer() {
40         return serializer;
41     }
42 }