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=KeyValue, discriminator=null, data={number=int, qcode=QKeyCode}, innerTypes=null, fields=null, discriminatorField=null}</pre>
017 */
018@JsonInclude(JsonInclude.Include.NON_EMPTY)
019public class KeyValue extends QApiType implements QApiUnion {
020        public static enum Discriminator {
021                number,
022                qcode,
023                __NONE;
024        }
025
026        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
027        @Nonnull
028        @JsonProperty("type")
029        public Discriminator type;
030
031        @Nonnull
032        public final Discriminator getType() {
033                return type;
034        }
035
036        // union {
037        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
038        @JsonProperty("number")
039        @JsonUnwrapped
040        @CheckForNull
041        public java.lang.Long number;
042        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
043        @JsonProperty("qcode")
044        @JsonUnwrapped
045        @CheckForNull
046        public QKeyCode qcode;
047        // }
048
049        @Nonnull
050        public static KeyValue number(@Nonnull java.lang.Long number) {
051                KeyValue self = new KeyValue();
052                self.type = Discriminator.number;
053                self.number = number;
054                return self;
055        }
056
057        @Nonnull
058        public static KeyValue qcode(@Nonnull QKeyCode qcode) {
059                KeyValue self = new KeyValue();
060                self.type = Discriminator.qcode;
061                self.qcode = qcode;
062                return self;
063        }
064
065        @Override
066        public java.util.List<java.lang.String> getFieldNames() {
067                java.util.List<java.lang.String> names = super.getFieldNames();
068                names.add("number");
069                names.add("qcode");
070                return names;
071        }
072
073        @JsonIgnore
074        @Override
075        public Object getFieldByName(@Nonnull java.lang.String name) throws NoSuchFieldException {
076                if ("number".equals(name))
077                        return number;
078                if ("qcode".equals(name))
079                        return qcode;
080                return super.getFieldByName(name);
081        }
082
083        @Override
084        @JsonIgnore
085        public boolean isValidUnion() {
086                int count = 0;
087                if (number != null)
088                        count++;
089                if (qcode != null)
090                        count++;
091                return (count == 1);
092        }
093}