Fix odlparent-3.0.0 checkstyle issues
[mdsal.git] / binding2 / mdsal-binding2-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / javav2 / dom / adapter / impl / data / tree / BindingDOMDataTreeCommitCohortRegistryAdapter.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 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;
22
23 /**
24  * Data tree commit cohort registry adapter.
25  */
26 @Beta
27 public final class BindingDOMDataTreeCommitCohortRegistryAdapter implements DataTreeCommitCohortRegistry {
28
29     private final BindingToNormalizedNodeCodec codec;
30     private final DOMDataTreeCommitCohortRegistry registry;
31
32     private BindingDOMDataTreeCommitCohortRegistryAdapter(final BindingToNormalizedNodeCodec codec,
33             final DOMDataTreeCommitCohortRegistry registry) {
34         this.codec = Preconditions.checkNotNull(codec);
35         this.registry = Preconditions.checkNotNull(registry);
36     }
37
38     /**
39      * Create instance of registry of commit cohort.
40      *
41      * @param codec
42      *            - codec for serialize/deserialize
43      * @param registry
44      *            - dom registry
45      * @return binding registry
46      */
47     public static DataTreeCommitCohortRegistry from(final BindingToNormalizedNodeCodec codec,
48             final DOMDataTreeCommitCohortRegistry registry) {
49         return new BindingDOMDataTreeCommitCohortRegistryAdapter(codec, registry);
50     }
51
52     @Override
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>() {
60
61             @Nonnull
62             @Override
63             public T getInstance() {
64                 return cohort;
65             }
66
67             @Override
68             public void close() throws Exception {
69                 domReg.close();
70             }
71         };
72     }
73 }