Disconnect mdsal-bind-dom-codec yangtools/mdsal APIs
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / yangtools / binding / data / codec / api / BindingNormalizedNodeWriterFactory.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. 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.yangtools.binding.data.codec.api;
9
10 import java.util.Map.Entry;
11 import javax.annotation.Nonnull;
12 import org.opendaylight.yangtools.yang.binding.BindingStreamEventWriter;
13 import org.opendaylight.yangtools.yang.binding.DataContainer;
14 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
15 import org.opendaylight.yangtools.yang.binding.Notification;
16 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
17 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
18
19 /**
20  *
21  * Factory for {@link BindingStreamEventWriter}, which provides stream writers
22  * which translates data and delegates calls to
23  * {@link NormalizedNodeStreamWriter}.
24  *
25  */
26 @Deprecated
27 public interface BindingNormalizedNodeWriterFactory {
28
29     /**
30      *
31      * Creates a {@link BindingStreamEventWriter} for data tree path which will
32      * translate to NormalizedNode model and invoke proper events on supplied
33      * {@link NormalizedNodeStreamWriter}.
34      * <p>
35      * Also provides translation of supplied Instance Identifier to
36      * {@link YangInstanceIdentifier} so client code, does not need to translate
37      * that separately.
38      * <p>
39      * If {@link YangInstanceIdentifier} is not needed, please use
40      * {@link #newWriter(InstanceIdentifier, NormalizedNodeStreamWriter)}
41      * method to conserve resources.
42      *
43      * @param path
44      *            Binding Path in conceptual data tree, for which writer should
45      *            be instantiated
46      * @param domWriter
47      *            Stream writer on which events will be invoked.
48      * @return Instance Identifier and {@link BindingStreamEventWriter}
49      *         which will write to supplied {@link NormalizedNodeStreamWriter}.
50      * @throws IllegalArgumentException If supplied Instance Identifier is not valid.
51      */
52     @Nonnull Entry<YangInstanceIdentifier, BindingStreamEventWriter> newWriterAndIdentifier(@Nonnull InstanceIdentifier<?> path,
53             @Nonnull NormalizedNodeStreamWriter domWriter);
54
55     /**
56      *
57      * Creates a {@link BindingStreamEventWriter} for data tree path which will
58      * translate to NormalizedNode model and invoke proper events on supplied
59      * {@link NormalizedNodeStreamWriter}.
60      * <p>
61      *
62      * This variation does not provide YANG instance identifier and is useful
63      * for use-cases, where {@link InstanceIdentifier} translation is done
64      * in other way, or YANG instance identifier is unnecessary (e.g. notifications, RPCs).
65      *
66      * @param path Binding Path in conceptual data tree, for which writer should
67      *            be instantiated
68      * @param domWriter Stream writer on which events will be invoked.
69      * @return {@link BindingStreamEventWriter}
70      *         which will write to supplied {@link NormalizedNodeStreamWriter}.
71      * @throws IllegalArgumentException If supplied Instance Identifier is not valid.
72      */
73     @Nonnull
74     BindingStreamEventWriter newWriter(@Nonnull InstanceIdentifier<?> path,
75             @Nonnull NormalizedNodeStreamWriter domWriter);
76
77     /**
78      *
79      * Creates a {@link BindingStreamEventWriter} for rpc data which will
80      * translate to NormalizedNode model and invoke proper events on supplied
81      * {@link NormalizedNodeStreamWriter}.
82      *
83      * @param rpcInputOrOutput Binding class representing RPC input or output,
84      *            for which writer should be instantiated
85      * @param domWriter
86      *            Stream writer on which events will be invoked.
87      * @return {@link BindingStreamEventWriter} which will write to supplied
88      *         {@link NormalizedNodeStreamWriter}.
89      */
90     @Nonnull
91     BindingStreamEventWriter newRpcWriter(@Nonnull Class<? extends DataContainer> rpcInputOrOutput,
92             @Nonnull NormalizedNodeStreamWriter domWriter);
93
94     /**
95      *
96      * Creates a {@link BindingStreamEventWriter} for notification which will
97      * translate to NormalizedNode model and invoke proper events on supplied
98      * {@link NormalizedNodeStreamWriter}.
99      *
100      * @param notification Binding class representing notification,
101      *            for which writer should be instantiated
102      * @param domWriter
103      *            Stream writer on which events will be invoked.
104      * @return {@link BindingStreamEventWriter} which will write to supplied
105      *         {@link NormalizedNodeStreamWriter}.
106      */
107     @Nonnull
108     BindingStreamEventWriter newNotificationWriter(@Nonnull Class<? extends Notification> notification,
109             @Nonnull NormalizedNodeStreamWriter domWriter);
110 }