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 javax.annotation.Nonnull;
14 import org.opendaylight.mdsal.binding.javav2.api.DataTreeCommitCohort;
15 import org.opendaylight.mdsal.binding.javav2.api.DataTreeCommitCohortRegistry;
16 import org.opendaylight.mdsal.binding.javav2.api.DataTreeIdentifier;
17 import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingToNormalizedNodeCodec;
18 import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
19 import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistration;
20 import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistry;
21 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
22 import org.opendaylight.yangtools.concepts.ObjectRegistration;
25 * Data tree commit cohort registry adapter.
28 public final class BindingDOMDataTreeCommitCohortRegistryAdapter implements DataTreeCommitCohortRegistry {
30 private final BindingToNormalizedNodeCodec codec;
31 private final DOMDataTreeCommitCohortRegistry registry;
33 private BindingDOMDataTreeCommitCohortRegistryAdapter(final BindingToNormalizedNodeCodec codec,
34 final DOMDataTreeCommitCohortRegistry registry) {
35 this.codec = requireNonNull(codec);
36 this.registry = requireNonNull(registry);
40 * Create instance of registry of commit cohort.
43 * - codec for serialize/deserialize
46 * @return binding registry
48 public static DataTreeCommitCohortRegistry from(final BindingToNormalizedNodeCodec codec,
49 final DOMDataTreeCommitCohortRegistry registry) {
50 return new BindingDOMDataTreeCommitCohortRegistryAdapter(codec, registry);
54 public <D extends TreeNode, T extends DataTreeCommitCohort<D>> ObjectRegistration<T>
55 registerCommitCohort(final DataTreeIdentifier<D> subtree, final T cohort) {
56 final BindingDOMDataTreeCommitCohortAdapter<D> adapter =
57 new BindingDOMDataTreeCommitCohortAdapter<>(codec, cohort);
58 final DOMDataTreeIdentifier domPath = codec.toDOMDataTreeIdentifier(subtree);
59 final DOMDataTreeCommitCohortRegistration<?> domReg = registry.registerCommitCohort(domPath, adapter);
60 return new ObjectRegistration<T>() {
64 public T getInstance() {