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.codec.api.factory;
10 import java.util.Map.Entry;
11 import javax.annotation.Nonnull;
12 import org.opendaylight.mdsal.binding.javav2.spec.base.InstanceIdentifier;
13 import org.opendaylight.mdsal.binding.javav2.spec.base.Instantiable;
14 import org.opendaylight.mdsal.binding.javav2.spec.base.Notification;
15 import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
16 import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingStreamEventWriter;
17 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
18 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
21 * Factory for {@link BindingStreamEventWriter}, which provides stream writers
22 * which translates data and delegates calls to
23 * {@link NormalizedNodeStreamWriter}.
26 public interface BindingNormalizedNodeWriterFactory {
29 * Creates a {@link BindingStreamEventWriter} for data tree path which will
30 * translate to NormalizedNode model and invoke proper events on supplied
31 * {@link NormalizedNodeStreamWriter}.
34 * Also provides translation of supplied Instance Identifier to
35 * {@link YangInstanceIdentifier} so client code, does not need to translate
39 * If {@link YangInstanceIdentifier} is not needed, please use
40 * {@link #newWriter(InstanceIdentifier, NormalizedNodeStreamWriter)} method
41 * to conserve resources.
44 * - Binding Path in conceptual data tree, for which writer
45 * should be instantiated
47 * - Stream writer on which events will be invoked
48 * @return Instance Identifier and {@link BindingStreamEventWriter} which
49 * will write to supplied {@link NormalizedNodeStreamWriter}
50 * @throws IllegalArgumentException
51 * - if supplied Instance Identifier is not valid
54 Entry<YangInstanceIdentifier, BindingStreamEventWriter> newWriterAndIdentifier(
55 @Nonnull InstanceIdentifier<? extends TreeNode> path, @Nonnull NormalizedNodeStreamWriter domWriter);
58 * Creates a {@link BindingStreamEventWriter} for data tree path which will
59 * translate to NormalizedNode model and invoke proper events on supplied
60 * {@link NormalizedNodeStreamWriter}.
63 * This variation does not provide YANG instance identifier and is useful
64 * for use-cases, where {@link InstanceIdentifier} translation is done in
65 * other way, or YANG instance identifier is unnecessary (e.g.
66 * notifications, operations).
69 * - Binding Path in conceptual data tree, for which writer
70 * should be instantiated
72 * - Stream writer on which events will be invoked
73 * @return {@link BindingStreamEventWriter} which will write to supplied
74 * {@link NormalizedNodeStreamWriter}
75 * @throws IllegalArgumentException
76 * - if supplied Instance Identifier is not valid
79 BindingStreamEventWriter newWriter(@Nonnull InstanceIdentifier<? extends TreeNode> path,
80 @Nonnull NormalizedNodeStreamWriter domWriter);
83 * Creates a {@link BindingStreamEventWriter} for operation data which will
84 * translate to NormalizedNode model and invoke proper events on supplied
85 * {@link NormalizedNodeStreamWriter}.
87 * @param operationInputOrOutput
88 * - binding class representing operation (RPC, Action) input or
89 * output, for which writer should be instantiated
91 * - stream writer on which events will be invoked
92 * @return {@link BindingStreamEventWriter} which will write to supplied
93 * {@link NormalizedNodeStreamWriter}
96 BindingStreamEventWriter newOperationWriter(@Nonnull Class<? extends Instantiable<?>> operationInputOrOutput,
97 @Nonnull NormalizedNodeStreamWriter domWriter);
100 * Creates a {@link BindingStreamEventWriter} for notification which will
101 * translate to NormalizedNode model and invoke proper events on supplied
102 * {@link NormalizedNodeStreamWriter}.
104 * @param notification
105 * - binding class representing notification, for which writer
106 * should be instantiated
108 * - stream writer on which events will be invoked
109 * @return {@link BindingStreamEventWriter} which will write to supplied
110 * {@link NormalizedNodeStreamWriter}
113 BindingStreamEventWriter newNotificationWriter(@Nonnull Class<? extends Notification<?>> notification,
114 @Nonnull NormalizedNodeStreamWriter domWriter);