Switch to Objects.requireNonNull
[mdsal.git] / binding2 / mdsal-binding2-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / javav2 / dom / adapter / impl / data / tree / BindingDOMDataTreeServiceAdapter.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies 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.javav2.dom.adapter.impl.data.tree;
9
10 import static java.util.Objects.requireNonNull;
11
12 import com.google.common.annotations.Beta;
13 import java.util.Collection;
14 import javax.annotation.Nonnull;
15 import org.opendaylight.mdsal.binding.javav2.api.DataTreeIdentifier;
16 import org.opendaylight.mdsal.binding.javav2.api.DataTreeListener;
17 import org.opendaylight.mdsal.binding.javav2.api.DataTreeLoopException;
18 import org.opendaylight.mdsal.binding.javav2.api.DataTreeProducer;
19 import org.opendaylight.mdsal.binding.javav2.api.DataTreeService;
20 import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingToNormalizedNodeCodec;
21 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
22 import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
23 import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
24 import org.opendaylight.yangtools.concepts.ListenerRegistration;
25
26 /**
27  * Data tree service adapter.
28  *
29  */
30 @Beta
31 public final class BindingDOMDataTreeServiceAdapter implements DataTreeService {
32
33     private final DOMDataTreeService delegate;
34     private final BindingToNormalizedNodeCodec codec;
35
36     private BindingDOMDataTreeServiceAdapter(final DOMDataTreeService delegate,
37             final BindingToNormalizedNodeCodec codec) {
38         this.delegate = requireNonNull(delegate, "delegate");
39         this.codec = requireNonNull(codec, "codec");
40     }
41
42     /**
43      * Create instance of data tree service adapter.
44      *
45      * @param domService
46      *            - data tree service
47      * @param codec
48      *            - codec foer serialize/deserialize
49      * @return instance of data tree service adapter
50      */
51     public static BindingDOMDataTreeServiceAdapter create(final DOMDataTreeService domService,
52             final BindingToNormalizedNodeCodec codec) {
53         return new BindingDOMDataTreeServiceAdapter(domService, codec);
54     }
55
56     @Override
57     public DataTreeProducer createProducer(final Collection<DataTreeIdentifier<?>> subtrees) {
58         final Collection<DOMDataTreeIdentifier> domSubtrees = codec.toDOMDataTreeIdentifiers(subtrees);
59         final DOMDataTreeProducer domChildProducer = delegate.createProducer(domSubtrees);
60         return BindingDOMDataTreeProducerAdapter.create(domChildProducer, codec);
61     }
62
63     @Nonnull
64     @Override
65     public <T extends DataTreeListener> ListenerRegistration<T> registerListener(@Nonnull final T listener,
66             @Nonnull final Collection<DataTreeIdentifier<?>> subtrees, final boolean allowRxMerges,
67             @Nonnull final Collection<DataTreeProducer> producers) throws DataTreeLoopException {
68         throw new UnsupportedOperationException("Not implemented yet.");
69     }
70 }