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=ChardevBackend, discriminator=null, data={file=ChardevFile, serial=ChardevHostdev, parallel=ChardevHostdev, pipe=ChardevHostdev, socket=ChardevSocket, udp=ChardevUdp, pty=ChardevDummy, null=ChardevDummy, mux=ChardevMux, msmouse=ChardevDummy, braille=ChardevDummy, testdev=ChardevDummy, stdio=ChardevStdio, console=ChardevDummy, spicevmc=ChardevSpiceChannel, spiceport=ChardevSpicePort, vc=ChardevVC, ringbuf=ChardevRingbuf, memory=ChardevRingbuf}, innerTypes=null, fields=null, discriminatorField=null}</pre>
017 */
018@JsonInclude(JsonInclude.Include.NON_EMPTY)
019public class ChardevBackend extends QApiType implements QApiUnion {
020        public static enum Discriminator {
021                file,
022                serial,
023                parallel,
024                pipe,
025                socket,
026                udp,
027                pty,
028                _null,
029                mux,
030                msmouse,
031                braille,
032                testdev,
033                stdio,
034                console,
035                spicevmc,
036                spiceport,
037                vc,
038                ringbuf,
039                memory,
040                __NONE;
041        }
042
043        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
044        @Nonnull
045        @JsonProperty("type")
046        public Discriminator type;
047
048        @Nonnull
049        public final Discriminator getType() {
050                return type;
051        }
052
053        // union {
054        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
055        @JsonProperty("file")
056        @JsonUnwrapped
057        @CheckForNull
058        public ChardevFile file;
059        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
060        @JsonProperty("serial")
061        @JsonUnwrapped
062        @CheckForNull
063        public ChardevHostdev serial;
064        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
065        @JsonProperty("parallel")
066        @JsonUnwrapped
067        @CheckForNull
068        public ChardevHostdev parallel;
069        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
070        @JsonProperty("pipe")
071        @JsonUnwrapped
072        @CheckForNull
073        public ChardevHostdev pipe;
074        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
075        @JsonProperty("socket")
076        @JsonUnwrapped
077        @CheckForNull
078        public ChardevSocket socket;
079        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
080        @JsonProperty("udp")
081        @JsonUnwrapped
082        @CheckForNull
083        public ChardevUdp udp;
084        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
085        @JsonProperty("pty")
086        @JsonUnwrapped
087        @CheckForNull
088        public ChardevDummy pty;
089        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
090        @JsonProperty("null")
091        @JsonUnwrapped
092        @CheckForNull
093        public ChardevDummy _null;
094        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
095        @JsonProperty("mux")
096        @JsonUnwrapped
097        @CheckForNull
098        public ChardevMux mux;
099        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
100        @JsonProperty("msmouse")
101        @JsonUnwrapped
102        @CheckForNull
103        public ChardevDummy msmouse;
104        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
105        @JsonProperty("braille")
106        @JsonUnwrapped
107        @CheckForNull
108        public ChardevDummy braille;
109        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
110        @JsonProperty("testdev")
111        @JsonUnwrapped
112        @CheckForNull
113        public ChardevDummy testdev;
114        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
115        @JsonProperty("stdio")
116        @JsonUnwrapped
117        @CheckForNull
118        public ChardevStdio stdio;
119        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
120        @JsonProperty("console")
121        @JsonUnwrapped
122        @CheckForNull
123        public ChardevDummy console;
124        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
125        @JsonProperty("spicevmc")
126        @JsonUnwrapped
127        @CheckForNull
128        public ChardevSpiceChannel spicevmc;
129        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
130        @JsonProperty("spiceport")
131        @JsonUnwrapped
132        @CheckForNull
133        public ChardevSpicePort spiceport;
134        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
135        @JsonProperty("vc")
136        @JsonUnwrapped
137        @CheckForNull
138        public ChardevVC vc;
139        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
140        @JsonProperty("ringbuf")
141        @JsonUnwrapped
142        @CheckForNull
143        public ChardevRingbuf ringbuf;
144        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
145        @JsonProperty("memory")
146        @JsonUnwrapped
147        @CheckForNull
148        public ChardevRingbuf memory;
149        // }
150
151        @Nonnull
152        public static ChardevBackend file(@Nonnull ChardevFile file) {
153                ChardevBackend self = new ChardevBackend();
154                self.type = Discriminator.file;
155                self.file = file;
156                return self;
157        }
158
159        @Nonnull
160        public static ChardevBackend serial(@Nonnull ChardevHostdev serial) {
161                ChardevBackend self = new ChardevBackend();
162                self.type = Discriminator.serial;
163                self.serial = serial;
164                return self;
165        }
166
167        @Nonnull
168        public static ChardevBackend parallel(@Nonnull ChardevHostdev parallel) {
169                ChardevBackend self = new ChardevBackend();
170                self.type = Discriminator.parallel;
171                self.parallel = parallel;
172                return self;
173        }
174
175        @Nonnull
176        public static ChardevBackend pipe(@Nonnull ChardevHostdev pipe) {
177                ChardevBackend self = new ChardevBackend();
178                self.type = Discriminator.pipe;
179                self.pipe = pipe;
180                return self;
181        }
182
183        @Nonnull
184        public static ChardevBackend socket(@Nonnull ChardevSocket socket) {
185                ChardevBackend self = new ChardevBackend();
186                self.type = Discriminator.socket;
187                self.socket = socket;
188                return self;
189        }
190
191        @Nonnull
192        public static ChardevBackend udp(@Nonnull ChardevUdp udp) {
193                ChardevBackend self = new ChardevBackend();
194                self.type = Discriminator.udp;
195                self.udp = udp;
196                return self;
197        }
198
199        @Nonnull
200        public static ChardevBackend pty(@Nonnull ChardevDummy pty) {
201                ChardevBackend self = new ChardevBackend();
202                self.type = Discriminator.pty;
203                self.pty = pty;
204                return self;
205        }
206
207        @Nonnull
208        public static ChardevBackend _null(@Nonnull ChardevDummy _null) {
209                ChardevBackend self = new ChardevBackend();
210                self.type = Discriminator._null;
211                self._null = _null;
212                return self;
213        }
214
215        @Nonnull
216        public static ChardevBackend mux(@Nonnull ChardevMux mux) {
217                ChardevBackend self = new ChardevBackend();
218                self.type = Discriminator.mux;
219                self.mux = mux;
220                return self;
221        }
222
223        @Nonnull
224        public static ChardevBackend msmouse(@Nonnull ChardevDummy msmouse) {
225                ChardevBackend self = new ChardevBackend();
226                self.type = Discriminator.msmouse;
227                self.msmouse = msmouse;
228                return self;
229        }
230
231        @Nonnull
232        public static ChardevBackend braille(@Nonnull ChardevDummy braille) {
233                ChardevBackend self = new ChardevBackend();
234                self.type = Discriminator.braille;
235                self.braille = braille;
236                return self;
237        }
238
239        @Nonnull
240        public static ChardevBackend testdev(@Nonnull ChardevDummy testdev) {
241                ChardevBackend self = new ChardevBackend();
242                self.type = Discriminator.testdev;
243                self.testdev = testdev;
244                return self;
245        }
246
247        @Nonnull
248        public static ChardevBackend stdio(@Nonnull ChardevStdio stdio) {
249                ChardevBackend self = new ChardevBackend();
250                self.type = Discriminator.stdio;
251                self.stdio = stdio;
252                return self;
253        }
254
255        @Nonnull
256        public static ChardevBackend console(@Nonnull ChardevDummy console) {
257                ChardevBackend self = new ChardevBackend();
258                self.type = Discriminator.console;
259                self.console = console;
260                return self;
261        }
262
263        @Nonnull
264        public static ChardevBackend spicevmc(@Nonnull ChardevSpiceChannel spicevmc) {
265                ChardevBackend self = new ChardevBackend();
266                self.type = Discriminator.spicevmc;
267                self.spicevmc = spicevmc;
268                return self;
269        }
270
271        @Nonnull
272        public static ChardevBackend spiceport(@Nonnull ChardevSpicePort spiceport) {
273                ChardevBackend self = new ChardevBackend();
274                self.type = Discriminator.spiceport;
275                self.spiceport = spiceport;
276                return self;
277        }
278
279        @Nonnull
280        public static ChardevBackend vc(@Nonnull ChardevVC vc) {
281                ChardevBackend self = new ChardevBackend();
282                self.type = Discriminator.vc;
283                self.vc = vc;
284                return self;
285        }
286
287        @Nonnull
288        public static ChardevBackend ringbuf(@Nonnull ChardevRingbuf ringbuf) {
289                ChardevBackend self = new ChardevBackend();
290                self.type = Discriminator.ringbuf;
291                self.ringbuf = ringbuf;
292                return self;
293        }
294
295        @Nonnull
296        public static ChardevBackend memory(@Nonnull ChardevRingbuf memory) {
297                ChardevBackend self = new ChardevBackend();
298                self.type = Discriminator.memory;
299                self.memory = memory;
300                return self;
301        }
302
303        @Override
304        public java.util.List<java.lang.String> getFieldNames() {
305                java.util.List<java.lang.String> names = super.getFieldNames();
306                names.add("file");
307                names.add("serial");
308                names.add("parallel");
309                names.add("pipe");
310                names.add("socket");
311                names.add("udp");
312                names.add("pty");
313                names.add("null");
314                names.add("mux");
315                names.add("msmouse");
316                names.add("braille");
317                names.add("testdev");
318                names.add("stdio");
319                names.add("console");
320                names.add("spicevmc");
321                names.add("spiceport");
322                names.add("vc");
323                names.add("ringbuf");
324                names.add("memory");
325                return names;
326        }
327
328        @JsonIgnore
329        @Override
330        public Object getFieldByName(@Nonnull java.lang.String name) throws NoSuchFieldException {
331                if ("file".equals(name))
332                        return file;
333                if ("serial".equals(name))
334                        return serial;
335                if ("parallel".equals(name))
336                        return parallel;
337                if ("pipe".equals(name))
338                        return pipe;
339                if ("socket".equals(name))
340                        return socket;
341                if ("udp".equals(name))
342                        return udp;
343                if ("pty".equals(name))
344                        return pty;
345                if ("null".equals(name))
346                        return _null;
347                if ("mux".equals(name))
348                        return mux;
349                if ("msmouse".equals(name))
350                        return msmouse;
351                if ("braille".equals(name))
352                        return braille;
353                if ("testdev".equals(name))
354                        return testdev;
355                if ("stdio".equals(name))
356                        return stdio;
357                if ("console".equals(name))
358                        return console;
359                if ("spicevmc".equals(name))
360                        return spicevmc;
361                if ("spiceport".equals(name))
362                        return spiceport;
363                if ("vc".equals(name))
364                        return vc;
365                if ("ringbuf".equals(name))
366                        return ringbuf;
367                if ("memory".equals(name))
368                        return memory;
369                return super.getFieldByName(name);
370        }
371
372        @Override
373        @JsonIgnore
374        public boolean isValidUnion() {
375                int count = 0;
376                if (file != null)
377                        count++;
378                if (serial != null)
379                        count++;
380                if (parallel != null)
381                        count++;
382                if (pipe != null)
383                        count++;
384                if (socket != null)
385                        count++;
386                if (udp != null)
387                        count++;
388                if (pty != null)
389                        count++;
390                if (_null != null)
391                        count++;
392                if (mux != null)
393                        count++;
394                if (msmouse != null)
395                        count++;
396                if (braille != null)
397                        count++;
398                if (testdev != null)
399                        count++;
400                if (stdio != null)
401                        count++;
402                if (console != null)
403                        count++;
404                if (spicevmc != null)
405                        count++;
406                if (spiceport != null)
407                        count++;
408                if (vc != null)
409                        count++;
410                if (ringbuf != null)
411                        count++;
412                if (memory != null)
413                        count++;
414                return (count == 1);
415        }
416}