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=TransactionAction, discriminator=null, data={blockdev-snapshot=BlockdevSnapshot, blockdev-snapshot-sync=BlockdevSnapshotSync, drive-backup=DriveBackup, blockdev-backup=BlockdevBackup, abort=Abort, blockdev-snapshot-internal-sync=BlockdevSnapshotInternal, block-dirty-bitmap-add=BlockDirtyBitmapAdd, block-dirty-bitmap-clear=BlockDirtyBitmap}, innerTypes=null, fields=null, discriminatorField=null}</pre>
017 */
018@JsonInclude(JsonInclude.Include.NON_EMPTY)
019public class TransactionAction extends QApiType implements QApiUnion {
020        public static enum Discriminator {
021                blockdev_snapshot,
022                blockdev_snapshot_sync,
023                drive_backup,
024                blockdev_backup,
025                abort,
026                blockdev_snapshot_internal_sync,
027                block_dirty_bitmap_add,
028                block_dirty_bitmap_clear,
029                __NONE;
030        }
031
032        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
033        @Nonnull
034        @JsonProperty("type")
035        public Discriminator type;
036
037        @Nonnull
038        public final Discriminator getType() {
039                return type;
040        }
041
042        // union {
043        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
044        @JsonProperty("blockdev-snapshot")
045        @JsonUnwrapped
046        @CheckForNull
047        public BlockdevSnapshot blockdevSnapshot;
048        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
049        @JsonProperty("blockdev-snapshot-sync")
050        @JsonUnwrapped
051        @CheckForNull
052        public BlockdevSnapshotSync blockdevSnapshotSync;
053        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
054        @JsonProperty("drive-backup")
055        @JsonUnwrapped
056        @CheckForNull
057        public DriveBackup driveBackup;
058        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
059        @JsonProperty("blockdev-backup")
060        @JsonUnwrapped
061        @CheckForNull
062        public BlockdevBackup blockdevBackup;
063        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
064        @JsonProperty("abort")
065        @JsonUnwrapped
066        @CheckForNull
067        public Abort abort;
068        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
069        @JsonProperty("blockdev-snapshot-internal-sync")
070        @JsonUnwrapped
071        @CheckForNull
072        public BlockdevSnapshotInternal blockdevSnapshotInternalSync;
073        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
074        @JsonProperty("block-dirty-bitmap-add")
075        @JsonUnwrapped
076        @CheckForNull
077        public BlockDirtyBitmapAdd blockDirtyBitmapAdd;
078        @SuppressFBWarnings("NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
079        @JsonProperty("block-dirty-bitmap-clear")
080        @JsonUnwrapped
081        @CheckForNull
082        public BlockDirtyBitmap blockDirtyBitmapClear;
083        // }
084
085        @Nonnull
086        public static TransactionAction blockdevSnapshot(@Nonnull BlockdevSnapshot blockdevSnapshot) {
087                TransactionAction self = new TransactionAction();
088                self.type = Discriminator.blockdev_snapshot;
089                self.blockdevSnapshot = blockdevSnapshot;
090                return self;
091        }
092
093        @Nonnull
094        public static TransactionAction blockdevSnapshotSync(@Nonnull BlockdevSnapshotSync blockdevSnapshotSync) {
095                TransactionAction self = new TransactionAction();
096                self.type = Discriminator.blockdev_snapshot_sync;
097                self.blockdevSnapshotSync = blockdevSnapshotSync;
098                return self;
099        }
100
101        @Nonnull
102        public static TransactionAction driveBackup(@Nonnull DriveBackup driveBackup) {
103                TransactionAction self = new TransactionAction();
104                self.type = Discriminator.drive_backup;
105                self.driveBackup = driveBackup;
106                return self;
107        }
108
109        @Nonnull
110        public static TransactionAction blockdevBackup(@Nonnull BlockdevBackup blockdevBackup) {
111                TransactionAction self = new TransactionAction();
112                self.type = Discriminator.blockdev_backup;
113                self.blockdevBackup = blockdevBackup;
114                return self;
115        }
116
117        @Nonnull
118        public static TransactionAction abort(@Nonnull Abort abort) {
119                TransactionAction self = new TransactionAction();
120                self.type = Discriminator.abort;
121                self.abort = abort;
122                return self;
123        }
124
125        @Nonnull
126        public static TransactionAction blockdevSnapshotInternalSync(@Nonnull BlockdevSnapshotInternal blockdevSnapshotInternalSync) {
127                TransactionAction self = new TransactionAction();
128                self.type = Discriminator.blockdev_snapshot_internal_sync;
129                self.blockdevSnapshotInternalSync = blockdevSnapshotInternalSync;
130                return self;
131        }
132
133        @Nonnull
134        public static TransactionAction blockDirtyBitmapAdd(@Nonnull BlockDirtyBitmapAdd blockDirtyBitmapAdd) {
135                TransactionAction self = new TransactionAction();
136                self.type = Discriminator.block_dirty_bitmap_add;
137                self.blockDirtyBitmapAdd = blockDirtyBitmapAdd;
138                return self;
139        }
140
141        @Nonnull
142        public static TransactionAction blockDirtyBitmapClear(@Nonnull BlockDirtyBitmap blockDirtyBitmapClear) {
143                TransactionAction self = new TransactionAction();
144                self.type = Discriminator.block_dirty_bitmap_clear;
145                self.blockDirtyBitmapClear = blockDirtyBitmapClear;
146                return self;
147        }
148
149        @Override
150        public java.util.List<java.lang.String> getFieldNames() {
151                java.util.List<java.lang.String> names = super.getFieldNames();
152                names.add("blockdev-snapshot");
153                names.add("blockdev-snapshot-sync");
154                names.add("drive-backup");
155                names.add("blockdev-backup");
156                names.add("abort");
157                names.add("blockdev-snapshot-internal-sync");
158                names.add("block-dirty-bitmap-add");
159                names.add("block-dirty-bitmap-clear");
160                return names;
161        }
162
163        @JsonIgnore
164        @Override
165        public Object getFieldByName(@Nonnull java.lang.String name) throws NoSuchFieldException {
166                if ("blockdev-snapshot".equals(name))
167                        return blockdevSnapshot;
168                if ("blockdev-snapshot-sync".equals(name))
169                        return blockdevSnapshotSync;
170                if ("drive-backup".equals(name))
171                        return driveBackup;
172                if ("blockdev-backup".equals(name))
173                        return blockdevBackup;
174                if ("abort".equals(name))
175                        return abort;
176                if ("blockdev-snapshot-internal-sync".equals(name))
177                        return blockdevSnapshotInternalSync;
178                if ("block-dirty-bitmap-add".equals(name))
179                        return blockDirtyBitmapAdd;
180                if ("block-dirty-bitmap-clear".equals(name))
181                        return blockDirtyBitmapClear;
182                return super.getFieldByName(name);
183        }
184
185        @Override
186        @JsonIgnore
187        public boolean isValidUnion() {
188                int count = 0;
189                if (blockdevSnapshot != null)
190                        count++;
191                if (blockdevSnapshotSync != null)
192                        count++;
193                if (driveBackup != null)
194                        count++;
195                if (blockdevBackup != null)
196                        count++;
197                if (abort != null)
198                        count++;
199                if (blockdevSnapshotInternalSync != null)
200                        count++;
201                if (blockDirtyBitmapAdd != null)
202                        count++;
203                if (blockDirtyBitmapClear != null)
204                        count++;
205                return (count == 1);
206        }
207}