2 * Copyright (c) 2017 Pantheon Technologies 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.javav2.dom.adapter.impl.data.tree;
10 import static java.util.Objects.requireNonNull;
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;
27 * Data tree service adapter.
31 public final class BindingDOMDataTreeServiceAdapter implements DataTreeService {
33 private final DOMDataTreeService delegate;
34 private final BindingToNormalizedNodeCodec codec;
36 private BindingDOMDataTreeServiceAdapter(final DOMDataTreeService delegate,
37 final BindingToNormalizedNodeCodec codec) {
38 this.delegate = requireNonNull(delegate, "delegate");
39 this.codec = requireNonNull(codec, "codec");
43 * Create instance of data tree service adapter.
48 * - codec foer serialize/deserialize
49 * @return instance of data tree service adapter
51 public static BindingDOMDataTreeServiceAdapter create(final DOMDataTreeService domService,
52 final BindingToNormalizedNodeCodec codec) {
53 return new BindingDOMDataTreeServiceAdapter(domService, codec);
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);
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.");