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=InputEvent, discriminator=null, data={key=InputKeyEvent, btn=InputBtnEvent, rel=InputMoveEvent, abs=InputMoveEvent}, innerTypes=null, fields=null, discriminatorField=null}</pre>
017 */
018@JsonInclude(JsonInclude.Include.NON_EMPTY)
019public class InputEvent extends QApiType implements QApiUnion {
020        public static enum Discriminator {
021                key,
022                btn,
023                rel,
024                abs,
025                __NONE;
026        }
027
028        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
029        @Nonnull
030        @JsonProperty("type")
031        public Discriminator type;
032
033        @Nonnull
034        public final Discriminator getType() {
035                return type;
036        }
037
038        // union {
039        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
040        @JsonProperty("key")
041        @JsonUnwrapped
042        @CheckForNull
043        public InputKeyEvent key;
044        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
045        @JsonProperty("btn")
046        @JsonUnwrapped
047        @CheckForNull
048        public InputBtnEvent btn;
049        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
050        @JsonProperty("rel")
051        @JsonUnwrapped
052        @CheckForNull
053        public InputMoveEvent rel;
054        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
055        @JsonProperty("abs")
056        @JsonUnwrapped
057        @CheckForNull
058        public InputMoveEvent abs;
059        // }
060
061        @Nonnull
062        public static InputEvent key(@Nonnull InputKeyEvent key) {
063                InputEvent self = new InputEvent();
064                self.type = Discriminator.key;
065                self.key = key;
066                return self;
067        }
068
069        @Nonnull
070        public static InputEvent btn(@Nonnull InputBtnEvent btn) {
071                InputEvent self = new InputEvent();
072                self.type = Discriminator.btn;
073                self.btn = btn;
074                return self;
075        }
076
077        @Nonnull
078        public static InputEvent rel(@Nonnull InputMoveEvent rel) {
079                InputEvent self = new InputEvent();
080                self.type = Discriminator.rel;
081                self.rel = rel;
082                return self;
083        }
084
085        @Nonnull
086        public static InputEvent abs(@Nonnull InputMoveEvent abs) {
087                InputEvent self = new InputEvent();
088                self.type = Discriminator.abs;
089                self.abs = abs;
090                return self;
091        }
092
093        @Override
094        public java.util.List<java.lang.String> getFieldNames() {
095                java.util.List<java.lang.String> names = super.getFieldNames();
096                names.add("key");
097                names.add("btn");
098                names.add("rel");
099                names.add("abs");
100                return names;
101        }
102
103        @JsonIgnore
104        @Override
105        public Object getFieldByName(@Nonnull java.lang.String name) throws NoSuchFieldException {
106                if ("key".equals(name))
107                        return key;
108                if ("btn".equals(name))
109                        return btn;
110                if ("rel".equals(name))
111                        return rel;
112                if ("abs".equals(name))
113                        return abs;
114                return super.getFieldByName(name);
115        }
116
117        @Override
118        @JsonIgnore
119        public boolean isValidUnion() {
120                int count = 0;
121                if (key != null)
122                        count++;
123                if (btn != null)
124                        count++;
125                if (rel != null)
126                        count++;
127                if (abs != null)
128                        count++;
129                return (count == 1);
130        }
131}