Search in sources :

Example 1 with TransientField

use of org.ovirt.engine.core.common.businessentities.TransientField in project ovirt-engine by oVirt.

the class VmHandler method init.

/**
 * Initialize list containers, for identity and permission check. The initialization should be executed
 * before calling ObjectIdentityChecker.
 *
 * @see Backend#initHandlers
 */
@PostConstruct
public void init() {
    Class<?>[] inspectedClassNames = new Class<?>[] { VmBase.class, VM.class, VmStatic.class, VmDynamic.class, VmManagementParametersBase.class };
    updateVmsStatic = new ObjectIdentityChecker(VmHandler.class, Arrays.asList(inspectedClassNames));
    for (Pair<EditableDeviceOnVmStatusField, Field> pair : BaseHandler.extractAnnotatedFields(EditableDeviceOnVmStatusField.class, inspectedClassNames)) {
        updateVmsStatic.addField(Arrays.asList(pair.getFirst().statuses()), pair.getSecond().getName());
    }
    for (Pair<TransientField, Field> pair : BaseHandler.extractAnnotatedFields(TransientField.class, inspectedClassNames)) {
        updateVmsStatic.addTransientFields(pair.getSecond().getName());
    }
    for (Pair<EditableVmField, Field> pair : BaseHandler.extractAnnotatedFields(EditableVmField.class, inspectedClassNames)) {
        EditableVmField annotation = pair.getFirst();
        List<VMStatus> statusList = Arrays.asList(annotation.onStatuses());
        String fieldName = pair.getSecond().getName();
        if (statusList.isEmpty()) {
            updateVmsStatic.addPermittedFields(fieldName);
        } else {
            updateVmsStatic.addField(statusList, fieldName);
            if (!annotation.hotSettableOnStatus().getStates().isEmpty()) {
                updateVmsStatic.addHotsetField(fieldName, annotation.hotSettableOnStatus().getStates());
            }
        }
        if (annotation.onHostedEngine()) {
            updateVmsStatic.addHostedEngineFields(fieldName);
        }
    }
}
Also used : VmBase(org.ovirt.engine.core.common.businessentities.VmBase) EditableDeviceOnVmStatusField(org.ovirt.engine.core.common.businessentities.EditableDeviceOnVmStatusField) Field(java.lang.reflect.Field) TransientField(org.ovirt.engine.core.common.businessentities.TransientField) EditableVmField(org.ovirt.engine.core.common.businessentities.EditableVmField) VmDynamic(org.ovirt.engine.core.common.businessentities.VmDynamic) TransientField(org.ovirt.engine.core.common.businessentities.TransientField) ObjectIdentityChecker(org.ovirt.engine.core.utils.ObjectIdentityChecker) VM(org.ovirt.engine.core.common.businessentities.VM) VmStatic(org.ovirt.engine.core.common.businessentities.VmStatic) VmManagementParametersBase(org.ovirt.engine.core.common.action.VmManagementParametersBase) EditableDeviceOnVmStatusField(org.ovirt.engine.core.common.businessentities.EditableDeviceOnVmStatusField) EditableVmField(org.ovirt.engine.core.common.businessentities.EditableVmField) VMStatus(org.ovirt.engine.core.common.businessentities.VMStatus) PostConstruct(javax.annotation.PostConstruct)

Aggregations

Field (java.lang.reflect.Field)1 PostConstruct (javax.annotation.PostConstruct)1 VmManagementParametersBase (org.ovirt.engine.core.common.action.VmManagementParametersBase)1 EditableDeviceOnVmStatusField (org.ovirt.engine.core.common.businessentities.EditableDeviceOnVmStatusField)1 EditableVmField (org.ovirt.engine.core.common.businessentities.EditableVmField)1 TransientField (org.ovirt.engine.core.common.businessentities.TransientField)1 VM (org.ovirt.engine.core.common.businessentities.VM)1 VMStatus (org.ovirt.engine.core.common.businessentities.VMStatus)1 VmBase (org.ovirt.engine.core.common.businessentities.VmBase)1 VmDynamic (org.ovirt.engine.core.common.businessentities.VmDynamic)1 VmStatic (org.ovirt.engine.core.common.businessentities.VmStatic)1 ObjectIdentityChecker (org.ovirt.engine.core.utils.ObjectIdentityChecker)1