001package org.anarres.qemu.qapi.api;
002
003import com.fasterxml.jackson.annotation.JsonIgnore;
004import com.fasterxml.jackson.annotation.JsonInclude;
005import com.fasterxml.jackson.annotation.JsonProperty;
006import com.fasterxml.jackson.annotation.JsonUnwrapped;
007import com.fasterxml.jackson.annotation.JsonValue;
008import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
009import javax.annotation.CheckForNull;
010import javax.annotation.Nonnull;
011import org.anarres.qemu.qapi.common.*;
012
013/**
014 * Autogenerated class.
015 *
016 * <pre>QApiUnionDescriptor{name=NetClientOptions, discriminator=null, data={none=NetdevNoneOptions, nic=NetLegacyNicOptions, user=NetdevUserOptions, tap=NetdevTapOptions, l2tpv3=NetdevL2TPv3Options, socket=NetdevSocketOptions, vde=NetdevVdeOptions, dump=NetdevDumpOptions, bridge=NetdevBridgeOptions, hubport=NetdevHubPortOptions, netmap=NetdevNetmapOptions, vhost-user=NetdevVhostUserOptions}, innerTypes=null, fields=null, discriminatorField=null}</pre>
017 */
018@JsonInclude(JsonInclude.Include.NON_EMPTY)
019public class NetClientOptions extends QApiType implements QApiUnion {
020        public static enum Discriminator {
021                none,
022                nic,
023                user,
024                tap,
025                l2tpv3,
026                socket,
027                vde,
028                dump,
029                bridge,
030                hubport,
031                netmap,
032                vhost_user,
033                __NONE;
034        }
035
036        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
037        @Nonnull
038        @JsonProperty("type")
039        public Discriminator type;
040
041        @Nonnull
042        public final Discriminator getType() {
043                return type;
044        }
045
046        // union {
047        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
048        @JsonProperty("none")
049        @JsonUnwrapped
050        @CheckForNull
051        public NetdevNoneOptions none;
052        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
053        @JsonProperty("nic")
054        @JsonUnwrapped
055        @CheckForNull
056        public NetLegacyNicOptions nic;
057        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
058        @JsonProperty("user")
059        @JsonUnwrapped
060        @CheckForNull
061        public NetdevUserOptions user;
062        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
063        @JsonProperty("tap")
064        @JsonUnwrapped
065        @CheckForNull
066        public NetdevTapOptions tap;
067        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
068        @JsonProperty("l2tpv3")
069        @JsonUnwrapped
070        @CheckForNull
071        public NetdevL2TPv3Options l2tpv3;
072        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
073        @JsonProperty("socket")
074        @JsonUnwrapped
075        @CheckForNull
076        public NetdevSocketOptions socket;
077        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
078        @JsonProperty("vde")
079        @JsonUnwrapped
080        @CheckForNull
081        public NetdevVdeOptions vde;
082        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
083        @JsonProperty("dump")
084        @JsonUnwrapped
085        @CheckForNull
086        public NetdevDumpOptions dump;
087        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
088        @JsonProperty("bridge")
089        @JsonUnwrapped
090        @CheckForNull
091        public NetdevBridgeOptions bridge;
092        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
093        @JsonProperty("hubport")
094        @JsonUnwrapped
095        @CheckForNull
096        public NetdevHubPortOptions hubport;
097        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
098        @JsonProperty("netmap")
099        @JsonUnwrapped
100        @CheckForNull
101        public NetdevNetmapOptions netmap;
102        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
103        @JsonProperty("vhost-user")
104        @JsonUnwrapped
105        @CheckForNull
106        public NetdevVhostUserOptions vhostUser;
107        // }
108
109        @Nonnull
110        public static NetClientOptions none(@Nonnull NetdevNoneOptions none) {
111                NetClientOptions self = new NetClientOptions();
112                self.type = Discriminator.none;
113                self.none = none;
114                return self;
115        }
116
117        @Nonnull
118        public static NetClientOptions nic(@Nonnull NetLegacyNicOptions nic) {
119                NetClientOptions self = new NetClientOptions();
120                self.type = Discriminator.nic;
121                self.nic = nic;
122                return self;
123        }
124
125        @Nonnull
126        public static NetClientOptions user(@Nonnull NetdevUserOptions user) {
127                NetClientOptions self = new NetClientOptions();
128                self.type = Discriminator.user;
129                self.user = user;
130                return self;
131        }
132
133        @Nonnull
134        public static NetClientOptions tap(@Nonnull NetdevTapOptions tap) {
135                NetClientOptions self = new NetClientOptions();
136                self.type = Discriminator.tap;
137                self.tap = tap;
138                return self;
139        }
140
141        @Nonnull
142        public static NetClientOptions l2tpv3(@Nonnull NetdevL2TPv3Options l2tpv3) {
143                NetClientOptions self = new NetClientOptions();
144                self.type = Discriminator.l2tpv3;
145                self.l2tpv3 = l2tpv3;
146                return self;
147        }
148
149        @Nonnull
150        public static NetClientOptions socket(@Nonnull NetdevSocketOptions socket) {
151                NetClientOptions self = new NetClientOptions();
152                self.type = Discriminator.socket;
153                self.socket = socket;
154                return self;
155        }
156
157        @Nonnull
158        public static NetClientOptions vde(@Nonnull NetdevVdeOptions vde) {
159                NetClientOptions self = new NetClientOptions();
160                self.type = Discriminator.vde;
161                self.vde = vde;
162                return self;
163        }
164
165        @Nonnull
166        public static NetClientOptions dump(@Nonnull NetdevDumpOptions dump) {
167                NetClientOptions self = new NetClientOptions();
168                self.type = Discriminator.dump;
169                self.dump = dump;
170                return self;
171        }
172
173        @Nonnull
174        public static NetClientOptions bridge(@Nonnull NetdevBridgeOptions bridge) {
175                NetClientOptions self = new NetClientOptions();
176                self.type = Discriminator.bridge;
177                self.bridge = bridge;
178                return self;
179        }
180
181        @Nonnull
182        public static NetClientOptions hubport(@Nonnull NetdevHubPortOptions hubport) {
183                NetClientOptions self = new NetClientOptions();
184                self.type = Discriminator.hubport;
185                self.hubport = hubport;
186                return self;
187        }
188
189        @Nonnull
190        public static NetClientOptions netmap(@Nonnull NetdevNetmapOptions netmap) {
191                NetClientOptions self = new NetClientOptions();
192                self.type = Discriminator.netmap;
193                self.netmap = netmap;
194                return self;
195        }
196
197        @Nonnull
198        public static NetClientOptions vhostUser(@Nonnull NetdevVhostUserOptions vhostUser) {
199                NetClientOptions self = new NetClientOptions();
200                self.type = Discriminator.vhost_user;
201                self.vhostUser = vhostUser;
202                return self;
203        }
204
205        @Override
206        public java.util.List<java.lang.String> getFieldNames() {
207                java.util.List<java.lang.String> names = super.getFieldNames();
208                names.add("none");
209                names.add("nic");
210                names.add("user");
211                names.add("tap");
212                names.add("l2tpv3");
213                names.add("socket");
214                names.add("vde");
215                names.add("dump");
216                names.add("bridge");
217                names.add("hubport");
218                names.add("netmap");
219                names.add("vhost-user");
220                return names;
221        }
222
223        @JsonIgnore
224        @Override
225        public Object getFieldByName(@Nonnull java.lang.String name) throws NoSuchFieldException {
226                if ("none".equals(name))
227                        return none;
228                if ("nic".equals(name))
229                        return nic;
230                if ("user".equals(name))
231                        return user;
232                if ("tap".equals(name))
233                        return tap;
234                if ("l2tpv3".equals(name))
235                        return l2tpv3;
236                if ("socket".equals(name))
237                        return socket;
238                if ("vde".equals(name))
239                        return vde;
240                if ("dump".equals(name))
241                        return dump;
242                if ("bridge".equals(name))
243                        return bridge;
244                if ("hubport".equals(name))
245                        return hubport;
246                if ("netmap".equals(name))
247                        return netmap;
248                if ("vhost-user".equals(name))
249                        return vhostUser;
250                return super.getFieldByName(name);
251        }
252
253        @Override
254        @JsonIgnore
255        public boolean isValidUnion() {
256                int count = 0;
257                if (none != null)
258                        count++;
259                if (nic != null)
260                        count++;
261                if (user != null)
262                        count++;
263                if (tap != null)
264                        count++;
265                if (l2tpv3 != null)
266                        count++;
267                if (socket != null)
268                        count++;
269                if (vde != null)
270                        count++;
271                if (dump != null)
272                        count++;
273                if (bridge != null)
274                        count++;
275                if (hubport != null)
276                        count++;
277                if (netmap != null)
278                        count++;
279                if (vhostUser != null)
280                        count++;
281                return (count == 1);
282        }
283}