2 * Copyright (c) 2014 Cisco Systems, Inc. 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.yangtools.binding.data.codec.api;
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;
21 * Factory for {@link BindingStreamEventWriter}, which provides stream writers
22 * which translates data and delegates calls to
23 * {@link NormalizedNodeStreamWriter}.
27 public interface BindingNormalizedNodeWriterFactory {
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}.
35 * Also provides translation of supplied Instance Identifier to
36 * {@link YangInstanceIdentifier} so client code, does not need to translate
39 * If {@link YangInstanceIdentifier} is not needed, please use
40 * {@link #newWriter(InstanceIdentifier, NormalizedNodeStreamWriter)}
41 * method to conserve resources.
44 * Binding Path in conceptual data tree, for which writer should
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.
52 @Nonnull Entry<YangInstanceIdentifier, BindingStreamEventWriter> newWriterAndIdentifier(@Nonnull InstanceIdentifier<?> path,
53 @Nonnull NormalizedNodeStreamWriter domWriter);
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}.
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).
66 * @param path Binding Path in conceptual data tree, for which writer should
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.
74 BindingStreamEventWriter newWriter(@Nonnull InstanceIdentifier<?> path,
75 @Nonnull NormalizedNodeStreamWriter domWriter);
79 * Creates a {@link BindingStreamEventWriter} for rpc data which will
80 * translate to NormalizedNode model and invoke proper events on supplied
81 * {@link NormalizedNodeStreamWriter}.
83 * @param rpcInputOrOutput Binding class representing RPC input or output,
84 * for which writer should be instantiated
86 * Stream writer on which events will be invoked.
87 * @return {@link BindingStreamEventWriter} which will write to supplied
88 * {@link NormalizedNodeStreamWriter}.
91 BindingStreamEventWriter newRpcWriter(@Nonnull Class<? extends DataContainer> rpcInputOrOutput,
92 @Nonnull NormalizedNodeStreamWriter domWriter);
96 * Creates a {@link BindingStreamEventWriter} for notification which will
97 * translate to NormalizedNode model and invoke proper events on supplied
98 * {@link NormalizedNodeStreamWriter}.
100 * @param notification Binding class representing notification,
101 * for which writer should be instantiated
103 * Stream writer on which events will be invoked.
104 * @return {@link BindingStreamEventWriter} which will write to supplied
105 * {@link NormalizedNodeStreamWriter}.
108 BindingStreamEventWriter newNotificationWriter(@Nonnull Class<? extends Notification> notification,
109 @Nonnull NormalizedNodeStreamWriter domWriter);