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 com.google.common.annotations.Beta;
11 import com.google.common.base.Preconditions;
12 import javax.annotation.Nonnull;
13 import org.opendaylight.mdsal.binding.javav2.api.DataTreeCommitCohort;
14 import org.opendaylight.mdsal.binding.javav2.api.DataTreeCommitCohortRegistry;
15 import org.opendaylight.mdsal.binding.javav2.api.DataTreeIdentifier;
16 import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingToNormalizedNodeCodec;
17 import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
18 import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistration;
19 import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistry;
20 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
21 import org.opendaylight.yangtools.concepts.ObjectRegistration;
24 * Data tree commit cohort registry adapter.
27 public final class BindingDOMDataTreeCommitCohortRegistryAdapter implements DataTreeCommitCohortRegistry {
29 private final BindingToNormalizedNodeCodec codec;
30 private final DOMDataTreeCommitCohortRegistry registry;
32 private BindingDOMDataTreeCommitCohortRegistryAdapter(final BindingToNormalizedNodeCodec codec,
33 final DOMDataTreeCommitCohortRegistry registry) {
34 this.codec = Preconditions.checkNotNull(codec);
35 this.registry = Preconditions.checkNotNull(registry);
39 * Create instance of registry of commit cohort.
42 * - codec for serialize/deserialize
45 * @return binding registry
47 public static DataTreeCommitCohortRegistry from(final BindingToNormalizedNodeCodec codec,
48 final DOMDataTreeCommitCohortRegistry registry) {
49 return new BindingDOMDataTreeCommitCohortRegistryAdapter(codec, registry);
53 public <D extends TreeNode, T extends DataTreeCommitCohort<D>> ObjectRegistration<T>
54 registerCommitCohort(final DataTreeIdentifier<D> subtree, final T cohort) {
55 final BindingDOMDataTreeCommitCohortAdapter<D> adapter =
56 new BindingDOMDataTreeCommitCohortAdapter<>(codec, cohort);
57 final DOMDataTreeIdentifier domPath = codec.toDOMDataTreeIdentifier(subtree);
58 final DOMDataTreeCommitCohortRegistration<?> domReg = registry.registerCommitCohort(domPath, adapter);
59 return new ObjectRegistration<T>() {
63 public T getInstance() {
68 public void close() throws Exception {