Roy Golan has uploaded a new change for review.

Change subject: core: auto generate VMHandler fields from annotations
......................................................................

core: auto generate VMHandler fields from annotations

Use annotated fields to generate what fields can be edited and
on which status.

Introduced 2 annotations;

 @EditableField
 private String name;

 @EditableOnVmStatus(status = Down)
 private Guid vdsGroupId;

note: several field names have bean updated to comply to java property
convention.

Change-Id: I8441f030c161c99c630a945b8b0228114665aa17
Signed-off-by: Roy Golan <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EditableField.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EditableOnVmStatusField.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java
8 files changed, 182 insertions(+), 81 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/11916/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsHandler.java
index e672703..be314c2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsHandler.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.core.bll;
 
+import java.util.Arrays;
 import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
@@ -8,6 +9,7 @@
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VDSType;
+import org.ovirt.engine.core.common.businessentities.VdsDynamic;
 import org.ovirt.engine.core.common.businessentities.VdsStatic;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
@@ -31,12 +33,10 @@
      */
     public static void Init()
     {
+        Class<?>[] inspectedClasses = new Class<?>[] { VDS.class, 
VdsStatic.class, VdsDynamic.class };
         mUpdateVdsStatic =
-            new ObjectIdentityChecker(
-                    VdsHandler.class,
-                    new 
java.util.ArrayList<String>(java.util.Arrays.asList(new String[] { "VDS", 
"VdsStatic",
-                            "VdsDynamic" })),
-                    VDSStatus.class);
+                new ObjectIdentityChecker(VdsHandler.class, 
Arrays.asList(inspectedClasses), VDSStatus.class);
+
         mUpdateVdsStatic.AddPermittedField("vds_name");
         mUpdateVdsStatic.AddPermittedField("managmentIp");
         mUpdateVdsStatic.AddPermittedField("pm_type");
@@ -62,7 +62,7 @@
         mUpdateVdsStatic.AddFields(
                 java.util.Arrays.asList(new Enum<?>[] { 
VDSStatus.NonResponsive, VDSStatus.Maintenance, VDSStatus.Down,
                         VDSStatus.Unassigned, VDSStatus.InstallFailed, 
VDSStatus.PendingApproval }),
-                java.util.Arrays.asList(new String[] { "ip", "vds_unique_id", 
"host_name", "port", "vds_group_id" }));
+                new String[] { "ip", "vds_unique_id", "host_name", "port", 
"vds_group_id" });
     }
 
     public VdsHandler() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
index f3cbbf4..a3aacbe 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.core.bll;
 
+import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -13,6 +14,8 @@
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.DisplayType;
+import org.ovirt.engine.core.common.businessentities.EditableField;
+import org.ovirt.engine.core.common.businessentities.EditableOnVmStatusField;
 import org.ovirt.engine.core.common.businessentities.UsbPolicy;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -27,6 +30,7 @@
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
+import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.common.utils.VmDeviceCommonUtils;
 import org.ovirt.engine.core.common.utils.VmDeviceType;
 import org.ovirt.engine.core.common.utils.VmValidationUtils;
@@ -49,11 +53,14 @@
 import 
org.ovirt.engine.core.utils.vmproperties.VmPropertiesUtils.ValidationFailureReason;
 
 public class VmHandler {
+
     private static final Map<VmPropertiesUtils.ValidationFailureReason, 
String> failureReasonsToVdcBllMessagesMap =
             new HashMap<VmPropertiesUtils.ValidationFailureReason, String>();
     private static final Map<VmPropertiesUtils.ValidationFailureReason, 
String> failureReasonsToFormatMessages =
             new HashMap<VmPropertiesUtils.ValidationFailureReason, String>();
     private static ObjectIdentityChecker mUpdateVmsStatic;
+
+    private static final Log log = LogFactory.getLog(VmHandler.class);
 
     static {
         
failureReasonsToVdcBllMessagesMap.put(ValidationFailureReason.DUPLICATE_KEY,
@@ -75,27 +82,21 @@
      * @see Backend#InitHandlers
      */
     public static void Init() {
-        mUpdateVmsStatic = new ObjectIdentityChecker(VmHandler.class,
-                Arrays.asList(new String[] { "VM", "VmStatic", "VmDynamic" }), 
VMStatus.class);
+        Class<?>[] inspectedClassNames = new Class<?>[] {
+                VmBase.class,
+                VM.class,
+                VmStatic.class,
+                VmDynamic.class };
 
-        mUpdateVmsStatic.AddPermittedFields(new String[] { "vmName", 
"description", "domain", "os", "osType",
-                "creationDate", "allowConsoleReconnect", "usbPolicy", 
"autoSuspend",
-                "autoStartup",
-                "dedicatedVmForVds", "priority", "defaultBootSequence", 
"initrdUrl",
-                "kernelUrl", "kernelParams", "migrationSupport", 
"minAllocatedMem", "quotaId", "quotaName",
-                "quotaEnforcementType", "cpuPinning",
-                "vmPayload", "balloonEnabled", 
"smartcardEnabled","deleteProtected","dbGeneration",
-                "images", // images list is relational entity - ignore value 
changes
-                "interfaces", // interfaces is relational entity - ignore 
value changes
-                "useHostCpuFlags",
-                "quotaDefault",
-                "tunnelMigration"
-        });
-        mUpdateVmsStatic.AddFields(
-                Arrays.asList(new Enum<?>[] { VMStatus.Down }),
-                Arrays.asList(new String[] { "vdsGroupId", "timeZone", 
"stateless", "niceLevel", "memSizeMb",
-                        "numOfSockets", "cpuPerSocket", "isoPath", 
"userDefinedProperties",
-                        "predefinedProperties", "customProperties", 
"defaultDisplayType", "numOfMonitors" }));
+        mUpdateVmsStatic =
+                new ObjectIdentityChecker(VmHandler.class, 
Arrays.asList(inspectedClassNames), VMStatus.class);
+
+        
mUpdateVmsStatic.AddPermittedFields(extractEditableFields(inspectedClassNames));
+
+        for (Pair<VMStatus, String> pair : extractyEditableOnStatusFields()) {
+            mUpdateVmsStatic.AddField(pair.getFirst(), pair.getSecond());
+        }
+
     }
 
     public static boolean isUpdateValid(VmStatic source, VmStatic destination, 
VMStatus status) {
@@ -510,6 +511,42 @@
         return (cdList.size() > 1 || floppyList.size() > 1);
     }
 
-    private static final Log log = LogFactory.getLog(VmHandler.class);
+    /**
+     * scan classes for {@link EditableField} annotated fields. Those fields 
must comply to a bean property form
+     *
+     * @param clz
+     * @return array of field names
+     */
+    private static String[] extractEditableFields(Class<?>... clz) {
+        ArrayList<String> fields = new ArrayList<String>();
+        for (Class<?> clazz : clz) {
+            for (Field field : clazz.getDeclaredFields()) {
+                if (field.isAnnotationPresent(EditableField.class)) {
+                    fields.add(field.getName());
+                }
+            }
+        }
+        return fields.toArray(new String[] {});
+    }
 
+
+    /**
+     * scan classes for {@link EditableOnVmStatusField} annotated fields. 
Those fields must comply to a bean property
+     * form
+     * @param clz
+     * @return array of pairs of a VMStatus -> field name
+     */
+    private static List<Pair<VMStatus, String>> 
extractyEditableOnStatusFields(Class<?>... clz) {
+        List<Pair<VMStatus, String>> pairList = new ArrayList<Pair<VMStatus, 
String>>();
+        for (Class<?> clazz : clz) {
+            for (Field field : clazz.getDeclaredFields()) {
+                EditableOnVmStatusField annotation = 
field.getAnnotation(EditableOnVmStatusField.class);
+                if (annotation != null) {
+                    pairList.add(new Pair<VMStatus, 
String>(annotation.status(), field.getName()));
+                }
+            }
+        }
+        return pairList;
+    }
 }
+
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EditableField.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EditableField.java
new file mode 100644
index 0000000..2ae1ccb
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EditableField.java
@@ -0,0 +1,12 @@
+package org.ovirt.engine.core.common.businessentities;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EditableField {
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EditableOnVmStatusField.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EditableOnVmStatusField.java
new file mode 100644
index 0000000..5afcf98
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EditableOnVmStatusField.java
@@ -0,0 +1,14 @@
+package org.ovirt.engine.core.common.businessentities;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EditableOnVmStatusField {
+
+    VMStatus status() default VMStatus.Down;
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
index aa9daf7..4b25dbc 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
@@ -23,7 +23,9 @@
 
     private VmDynamic vmDynamic;
     private VmStatistics vmStatistics;
+    @EditableField
     private VmPayload vmPayload;
+    @EditableField
     private boolean balloonEnabled = true;
 
     @Valid
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
index 212df78..8e43c8b 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
@@ -23,93 +23,124 @@
 
 public class VmBase extends IVdcQueryable implements BusinessEntity<Guid> {
     private static final long serialVersionUID = 1078548170257965614L;
+
+    @EditableField
     private ArrayList<DiskImage> images;
-    private ArrayList<DiskImage> diskList = new ArrayList<DiskImage>();
+
+    @EditableField
     private List<VmNetworkInterface> interfaces;
+
+    private ArrayList<DiskImage> diskList = new ArrayList<DiskImage>();
     private Map<Guid, VmDevice> managedDeviceMap = new HashMap<Guid, 
VmDevice>();
     private List<VmDevice> unmanagedDeviceList = new ArrayList<VmDevice>();
 
     private Guid id = new Guid();
 
+    @EditableOnVmStatusField
     private Guid vdsGroupId;
 
-    private VmOsType mOs = VmOsType.Unassigned;
+    @EditableField
+    private VmOsType os = VmOsType.Unassigned;
 
+    @EditableField
     private Date creationDate = new Date(0);
 
+    @EditableField
     @Size(max = BusinessEntitiesDefinitions.VM_DESCRIPTION_SIZE)
     @ValidDescription(message = 
"ACTION_TYPE_FAILED_DESCRIPTION_MAY_NOT_CONTAIN_SPECIAL_CHARS",
             groups = { CreateEntity.class, UpdateEntity.class })
     private String description;
 
-    private int memSizeMB;
+    @EditableOnVmStatusField
+    private int memSizeMb;
 
+    @EditableOnVmStatusField
     private int numOfSockets = 1;
 
-    private int cpusPerSocket = 1;
+    @EditableOnVmStatusField
+    private int cpuPerSocket = 1;
 
+    @EditableOnVmStatusField
     @IntegerContainedInConfigValueList(configValue = 
ConfigValues.ValidNumOfMonitors, groups = DesktopVM.class,
             message = "VALIDATION.VM.NUM_OF_MONITORS.EXCEEDED")
     private int numOfMonitors;
 
+    @EditableField
     @Size(max = BusinessEntitiesDefinitions.GENERAL_DOMAIN_SIZE)
     private String domain;
 
+    @EditableOnVmStatusField
     @Size(max = BusinessEntitiesDefinitions.GENERAL_TIME_ZONE_SIZE)
-    private String timezone;
+    private String timeZone;
 
     private VmType vmType = VmType.Desktop;
 
+    @EditableField
     private UsbPolicy usbPolicy = UsbPolicy.DISABLED;
 
     private boolean failBack;
 
+    @EditableField
     private BootSequence defaultBootSequence = BootSequence.C;
 
+    @EditableOnVmStatusField
     private int niceLevel;
 
-    private boolean autosuspend;
+    @EditableField
+    private boolean autoSuspend;
 
+    @EditableField
     private int priority;
 
+    @EditableField
     private boolean autoStartup;
 
+    @EditableOnVmStatusField
     private boolean stateless;
 
+    @EditableField
     private boolean deleteProtected;
 
+    @EditableField
     private long dbGeneration;
 
+    @EditableField
     private boolean smartcardEnabled;
 
+    @EditableOnVmStatusField
     @Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
     private String isoPath = "";
 
     private OriginType origin;
 
+    @EditableField
     @Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
     @Pattern(regexp = ValidationUtils.NO_TRIMMING_WHITE_SPACES_PATTERN,
             message = 
"ACTION_TYPE_FAILED_LINUX_BOOT_PARAMS_MAY_NOT_CONTAIN_TRIMMING_WHITESPACES", 
groups = { CreateEntity.class,
                     UpdateEntity.class })
     private String kernelUrl;
 
+    @EditableField
     @Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
     @Pattern(regexp = ValidationUtils.NO_TRIMMING_WHITE_SPACES_PATTERN,
             message = 
"ACTION_TYPE_FAILED_LINUX_BOOT_PARAMS_MAY_NOT_CONTAIN_TRIMMING_WHITESPACES", 
groups = { CreateEntity.class,
                     UpdateEntity.class })
     private String kernelParams;
 
+    @EditableField
     @Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
     @Pattern(regexp = ValidationUtils.NO_TRIMMING_WHITE_SPACES_PATTERN,
             message = 
"ACTION_TYPE_FAILED_LINUX_BOOT_PARAMS_MAY_NOT_CONTAIN_TRIMMING_WHITESPACES", 
groups = { CreateEntity.class,
                     UpdateEntity.class })
     private String initrdUrl;
 
+    @EditableField
     private boolean allowConsoleReconnect;
 
     /**
      * if this field is null then value should be taken from cluster
      */
+    @EditableField
     private Boolean tunnelMigration;
 
     /**
@@ -125,22 +156,30 @@
     public VmBase() {
     }
 
+    @EditableField
     private Guid quotaId;
 
+
     /** Transient field for GUI presentation purposes. */
+    @EditableField
     private String quotaName;
 
+    @EditableField
     /** Transient field for GUI presentation purposes. */
     private boolean isQuotaDefault;
 
     /** Transient field for GUI presentation purposes. */
+    @EditableField
     private QuotaEnforcementTypeEnum quotaEnforcementType;
 
+    @EditableField
     @OvfExportOnlyField(valueToIgnore = "MIGRATABLE", exportOption = 
ExportOption.EXPORT_NON_IGNORED_VALUES)
     private MigrationSupport migrationSupport = MigrationSupport.MIGRATABLE;
 
+    @EditableField
     private NGuid dedicatedVmForVds;
 
+    @EditableOnVmStatusField
     protected DisplayType defaultDisplayType = DisplayType.qxl;
 
     public VmBase(Guid id,
@@ -175,21 +214,21 @@
         super();
         this.id = id;
         this.vdsGroupId = vdsGroupId;
-        this.mOs = os;
+        this.os = os;
         this.creationDate = creationDate;
         this.description = description;
-        this.memSizeMB = memSizeMB;
+        this.memSizeMb = memSizeMB;
         this.numOfSockets = numOfSockets;
-        this.cpusPerSocket = cpusPerSocket;
+        this.cpuPerSocket = cpusPerSocket;
         this.numOfMonitors = numOfMonitors;
         this.domain = domain;
-        this.timezone = timezone;
+        this.timeZone = timezone;
         this.vmType = vmType;
         this.usbPolicy = usbPolicy;
         this.failBack = failBack;
         this.defaultBootSequence = defaultBootSequence;
         this.niceLevel = niceLevel;
-        this.autosuspend = autosuspend;
+        this.autoSuspend = autosuspend;
         this.priority = priority;
         this.autoStartup = autoStartup;
         this.stateless = stateless;
@@ -271,21 +310,11 @@
     }
 
     public VmOsType getOs() {
-        return mOs;
+        return os;
     }
 
     public void setOs(VmOsType value) {
-        mOs = value;
-    }
-
-    @Deprecated
-    public VmOsType getOsType() {
-        return getOs();
-    }
-
-    @Deprecated
-    public void setOsType(VmOsType value) {
-        setOs(value);
+        os = value;
     }
 
     public Date getCreationDate() {
@@ -305,11 +334,11 @@
     }
 
     public int getMemSizeMb() {
-        return memSizeMB;
+        return memSizeMb;
     }
 
     public void setMemSizeMb(int value) {
-        this.memSizeMB = value;
+        this.memSizeMb = value;
     }
 
     public int getNumOfSockets() {
@@ -321,11 +350,11 @@
     }
 
     public int getCpuPerSocket() {
-        return cpusPerSocket;
+        return cpuPerSocket;
     }
 
     public void setCpuPerSocket(int value) {
-        this.cpusPerSocket = value;
+        this.cpuPerSocket = value;
     }
 
     public int getNumOfMonitors() {
@@ -345,11 +374,11 @@
     }
 
     public String getTimeZone() {
-        return timezone;
+        return timeZone;
     }
 
     public void setTimeZone(String value) {
-        timezone = value;
+        timeZone = value;
     }
 
     public VmType getVmType() {
@@ -393,11 +422,11 @@
     }
 
     public boolean isAutoSuspend() {
-        return autosuspend;
+        return autoSuspend;
     }
 
     public void setAutoSuspend(boolean value) {
-        autosuspend = value;
+        autoSuspend = value;
     }
 
     public int getPriority() {
@@ -501,8 +530,8 @@
         final int prime = 31;
         int result = 1;
         result = prime * result + (autoStartup ? 1231 : 1237);
-        result = prime * result + (autosuspend ? 1231 : 1237);
-        result = prime * result + cpusPerSocket;
+        result = prime * result + (autoSuspend ? 1231 : 1237);
+        result = prime * result + cpuPerSocket;
         result = prime * result + ((creationDate == null) ? 0 : 
creationDate.hashCode());
         result = prime * result + ((defaultBootSequence == null) ? 0 : 
defaultBootSequence.hashCode());
         result = prime * result + ((description == null) ? 0 : 
description.hashCode());
@@ -513,8 +542,8 @@
         result = prime * result + ((isoPath == null) ? 0 : isoPath.hashCode());
         result = prime * result + ((kernelParams == null) ? 0 : 
kernelParams.hashCode());
         result = prime * result + ((kernelUrl == null) ? 0 : 
kernelUrl.hashCode());
-        result = prime * result + ((mOs == null) ? 0 : mOs.hashCode());
-        result = prime * result + memSizeMB;
+        result = prime * result + ((os == null) ? 0 : os.hashCode());
+        result = prime * result + memSizeMb;
         result = prime * result + niceLevel;
         result = prime * result + numOfSockets;
         result = prime * result + numOfMonitors;
@@ -522,7 +551,7 @@
         result = prime * result + priority;
         result = prime * result + (stateless ? 1231 : 1237);
         result = prime * result + (smartcardEnabled ? 1231 : 1237);
-        result = prime * result + ((timezone == null) ? 0 : 
timezone.hashCode());
+        result = prime * result + ((timeZone == null) ? 0 : 
timeZone.hashCode());
         result = prime * result + ((usbPolicy == null) ? 0 : 
usbPolicy.hashCode());
         result = prime * result + ((vdsGroupId == null) ? 0 : 
vdsGroupId.hashCode());
         result = prime * result + ((vmType == null) ? 0 : vmType.hashCode());
@@ -550,10 +579,10 @@
         if (autoStartup != other.autoStartup) {
             return false;
         }
-        if (autosuspend != other.autosuspend) {
+        if (autoSuspend != other.autoSuspend) {
             return false;
         }
-        if (cpusPerSocket != other.cpusPerSocket) {
+        if (cpuPerSocket != other.cpuPerSocket) {
             return false;
         }
         if (creationDate == null) {
@@ -618,10 +647,10 @@
         } else if (!kernelUrl.equals(other.kernelUrl)) {
             return false;
         }
-        if (mOs != other.mOs) {
+        if (os != other.os) {
             return false;
         }
-        if (memSizeMB != other.memSizeMB) {
+        if (memSizeMb != other.memSizeMb) {
             return false;
         }
         if (niceLevel != other.niceLevel) {
@@ -648,11 +677,11 @@
         if (deleteProtected != other.deleteProtected) {
             return false;
         }
-        if (timezone == null) {
-            if (other.timezone != null) {
+        if (timeZone == null) {
+            if (other.timeZone != null) {
                 return false;
             }
-        } else if (!timezone.equals(other.timezone)) {
+        } else if (!timeZone.equals(other.timeZone)) {
             return false;
         }
         if (usbPolicy != other.usbPolicy) {
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
index caf0077..51cb919 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
@@ -18,16 +18,19 @@
     @Size(min = 1, max = BusinessEntitiesDefinitions.VM_NAME_SIZE, groups = { 
Default.class, ImportClonedEntity.class })
     @ValidI18NName(message = 
"ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS",
             groups = { CreateEntity.class, UpdateEntity.class, 
ImportClonedEntity.class })
+    @EditableField
     private String name = "";
 
     private Guid vmtGuid = new Guid();
 
     private boolean initialized;
 
+    @EditableOnVmStatusField
     @OvfExportOnlyField(exportOption = ExportOption.EXPORT_NON_IGNORED_VALUES)
     @Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
     private String userDefinedProperties;
 
+    @EditableOnVmStatusField
     @OvfExportOnlyField(exportOption = ExportOption.EXPORT_NON_IGNORED_VALUES)
     @Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
     private String predefinedProperties;
@@ -37,14 +40,18 @@
      */
     private int diskSize;
 
-    private int minAllocatedMemField;
+    @EditableField
+    private int minAllocatedMem;
 
+    @EditableOnVmStatusField
     private String customProperties;
 
+    @EditableField
     @OvfExportOnlyField(exportOption = ExportOption.EXPORT_NON_IGNORED_VALUES)
     @Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
     private String cpuPinning;
 
+    @EditableField
     private boolean useHostCpuFlags = false;
 
     public VmStatic() {
@@ -210,14 +217,14 @@
     }
 
     public int getMinAllocatedMem() {
-        if (minAllocatedMemField > 0) {
-            return minAllocatedMemField;
+        if (minAllocatedMem > 0) {
+            return minAllocatedMem;
         }
         return getMemSizeMb();
     }
 
     public void setMinAllocatedMem(int value) {
-        minAllocatedMemField = value;
+        minAllocatedMem = value;
     }
 
     @Override
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java
index c932170..1b20ca9 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java
@@ -31,14 +31,14 @@
         identities.put(type, this);
     }
 
-    public ObjectIdentityChecker(Class<?> type, Iterable<String> aliases) {
+    public ObjectIdentityChecker(Class<?> type, Iterable<Class<?>> aliases) {
         this(type);
-        for (String alias : aliases) {
-            ObjectIdentityChecker.aliases.put(alias, type);
+        for (Class<?> alias : aliases) {
+            ObjectIdentityChecker.aliases.put(alias.getSimpleName(), type);
         }
     }
 
-    public ObjectIdentityChecker(Class<?> type, Iterable<String> aliases, 
Class<?> enumType) {
+    public ObjectIdentityChecker(Class<?> type, Iterable<Class<?>> aliases, 
Class<?> enumType) {
         this(type, aliases);
         statusTypes.put(type, enumType);
     }
@@ -78,7 +78,7 @@
             if (statusType != null) {
                 Enum<?> currentStatus;
                 try {
-                    currentStatus = (Enum<?>) EnumUtils.valueOf(statusType, 
status, true);
+                    currentStatus = EnumUtils.valueOf(statusType, status, 
true);
                 } catch (IllegalArgumentException e) {
                     throw new RuntimeException(String.format("status type %1$s 
not contain type %2$s", statusType,
                             status));
@@ -107,7 +107,7 @@
         }
     }
 
-    public final void AddFields(Iterable<Enum<?>> statuses, Iterable<String> 
fields) {
+    public final void AddFields(Iterable<Enum<?>> statuses, String... fields) {
         for (String field : fields) {
             AddField(statuses, field);
         }
@@ -117,7 +117,7 @@
         permitted.add(fieldName);
     }
 
-    public final void AddPermittedFields(String[] fieldNames) {
+    public final void AddPermittedFields(String... fieldNames) {
         for (String fieldName : fieldNames) {
             AddPermittedField(fieldName);
         }


--
To view, visit http://gerrit.ovirt.org/11916
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8441f030c161c99c630a945b8b0228114665aa17
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Roy Golan <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to