Ravi Nori has uploaded a new change for review. Change subject: restapi : malformated guid's cause http 500 (#902073) ......................................................................
restapi : malformated guid's cause http 500 (#902073) When malformed Guids are passed in post data for action the backend throws an internal error. This patch moves MalformedIdException to restapi-types and throws the exception if any invalid guids are passed. Change-Id: Iebce833327654e1635632fb4a00ca8a3cf14fab5 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=902073 Signed-off-by: Ravi Nori <rn...@redhat.com> --- M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DiskMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/MappingLocator.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NicMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermissionMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QuotaMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ReportedDeviceMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/RoleMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TagMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmPoolMapper.java A backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/GuidUtils.java A backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/MalformedIdException.java M backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/MappingTestHelper.java 23 files changed, 95 insertions(+), 70 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/58/11758/1 diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java index ee32a07..cf37705 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java @@ -21,6 +21,7 @@ import org.ovirt.engine.api.restapi.logging.Messages; import org.ovirt.engine.api.restapi.resource.validation.ValidatorLocator; import org.ovirt.engine.api.restapi.util.SessionHelper; +import org.ovirt.engine.api.restapi.utils.MalformedIdException; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.interfaces.BackendLocal; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; @@ -239,15 +240,6 @@ ArrayList<T> list = new ArrayList<T>(); list.add(t); return list; - } - - public static class MalformedIdException extends IllegalArgumentException { - - private static final long serialVersionUID = 1L; - - public MalformedIdException(IllegalArgumentException e) { - super(e); - } } protected Guid asGuid(String id) { diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java index 8df2b8b..86be95e 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java @@ -6,7 +6,7 @@ import javax.ws.rs.ext.Provider; import org.jboss.resteasy.annotations.interception.ServerInterceptor; -import org.ovirt.engine.api.restapi.resource.BaseBackendResource.MalformedIdException; +import org.ovirt.engine.api.restapi.utils.MalformedIdException; @Provider @ServerInterceptor diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java index 1400213..ca5c63b 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendResourceTest.java @@ -11,7 +11,7 @@ import org.ovirt.engine.api.model.Action; import org.ovirt.engine.api.model.Cluster; import org.ovirt.engine.api.model.Host; -import org.ovirt.engine.api.restapi.resource.BaseBackendResource.MalformedIdException; +import org.ovirt.engine.api.restapi.utils.MalformedIdException; import org.ovirt.engine.core.common.action.UpdateVdsActionParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VDS; diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java index 9ad8f11..c960cbb 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ClusterMapper.java @@ -14,11 +14,11 @@ import org.ovirt.engine.api.model.SchedulingPolicyType; import org.ovirt.engine.api.model.TransparentHugePages; import org.ovirt.engine.api.model.Version; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.MigrateOnErrorOptions; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VdsSelectionAlgorithm; import org.ovirt.engine.core.common.businessentities.storage_pool; -import org.ovirt.engine.core.compat.Guid; public class ClusterMapper { @@ -28,7 +28,7 @@ public static VDSGroup map(Cluster model, VDSGroup template) { VDSGroup entity = template != null ? template : new VDSGroup(); if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setname(model.getName()); @@ -40,7 +40,7 @@ entity.setcpu_name(model.getCpu().getId()); } if (model.isSetDataCenter() && model.getDataCenter().isSetId()) { - entity.setStoragePoolId(new Guid(model.getDataCenter().getId())); + entity.setStoragePoolId(GuidUtils.asGuid(model.getDataCenter().getId())); } if (model.isSetVersion() && model.getVersion().getMajor()!=null && model.getVersion().getMinor()!=null) { entity.setcompatibility_version(new org.ovirt.engine.core.compat.Version(model.getVersion().getMajor(), diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java index 4ded3cf..844ba79 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java @@ -7,9 +7,9 @@ import org.ovirt.engine.api.restapi.model.StorageFormat; import org.ovirt.engine.api.model.StorageType; import org.ovirt.engine.api.model.Version; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.common.businessentities.storage_pool; -import org.ovirt.engine.core.compat.Guid; public class DataCenterMapper { @@ -17,7 +17,7 @@ public static storage_pool map(DataCenter model, storage_pool template) { storage_pool entity = template != null ? template : new storage_pool(); if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setname(model.getName()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DiskMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DiskMapper.java index 158ea91..e3841fd 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DiskMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DiskMapper.java @@ -11,6 +11,7 @@ import org.ovirt.engine.api.model.Storage; import org.ovirt.engine.api.model.StorageDomain; import org.ovirt.engine.api.model.StorageDomains; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.ImageStatus; @@ -40,7 +41,7 @@ engineDisk.setDiskAlias(disk.getAlias()); } if (disk.isSetId()) { - engineDisk.setId(new Guid(disk.getId())); + engineDisk.setId(GuidUtils.asGuid(disk.getId())); } if (disk.isSetBootable()) { engineDisk.setBoot(disk.isBootable()); @@ -75,7 +76,7 @@ private static void mapDiskToDiskImageProperties(Disk disk, DiskImage diskImage) { if (disk.isSetImageId()) { - diskImage.setImageId(new Guid(disk.getImageId())); + diskImage.setImageId(GuidUtils.asGuid(disk.getImageId())); } //Notice below: //Both <size> and <provisioned_size> are mapped to the same field: 'size' in the @@ -113,7 +114,7 @@ diskImage.getstorage_ids().add(Guid.createGuidFromString(storageDomain.getId())); } if (disk.isSetQuota() && disk.getQuota().isSetId()) { - diskImage.setQuotaId(new Guid(disk.getQuota().getId())); + diskImage.setQuotaId(GuidUtils.asGuid(disk.getQuota().getId())); } } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java index 5a0c5d4..e0d1649 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java @@ -32,6 +32,7 @@ import org.ovirt.engine.api.model.TransparentHugePages; import org.ovirt.engine.api.model.Version; import org.ovirt.engine.api.model.VmSummary; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VDSType; @@ -40,7 +41,6 @@ import org.ovirt.engine.core.common.businessentities.VdsTransparentHugePagesState; import org.ovirt.engine.core.common.queries.ValueObjectMap; import org.ovirt.engine.core.common.queries.ValueObjectPair; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; public class HostMapper { @@ -57,13 +57,13 @@ public static VdsStatic map(Host model, VdsStatic template) { VdsStatic entity = template != null ? template : new VdsStatic(); if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setvds_name(model.getName()); } if (model.isSetCluster() && model.getCluster().isSetId()) { - entity.setvds_group_id(new Guid(model.getCluster().getId())); + entity.setvds_group_id(GuidUtils.asGuid(model.getCluster().getId())); } if (model.isSetAddress()) { entity.sethost_name(model.getAddress()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java index 0df4226..952daa4 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java @@ -10,10 +10,10 @@ import org.ovirt.engine.api.model.NicStatus; import org.ovirt.engine.api.model.Option; import org.ovirt.engine.api.model.Options; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus; import org.ovirt.engine.core.common.businessentities.network.NetworkBootProtocol; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; public class HostNicMapper { @@ -29,7 +29,7 @@ public static VdsNetworkInterface map(HostNIC model, VdsNetworkInterface template) { VdsNetworkInterface entity = template != null ? template : new VdsNetworkInterface(); if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetNetwork() && model.getNetwork().isSetName()) { entity.setNetworkName(model.getNetwork().getName()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/MappingLocator.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/MappingLocator.java index 5eb5618..14f7acd 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/MappingLocator.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/MappingLocator.java @@ -1,11 +1,13 @@ package org.ovirt.engine.api.restapi.types; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.List; import java.util.Map; import org.ovirt.engine.api.common.util.PackageExplorer; +import org.ovirt.engine.api.restapi.utils.MalformedIdException; /** * Discovers and manages type mappers. @@ -113,6 +115,10 @@ try { // REVISIT support non-static mapping methods also ret = method.invoke(null, from, template); + } catch (InvocationTargetException ite) { + if (ite.getTargetException() instanceof MalformedIdException) { + throw (MalformedIdException) ite.getTargetException(); + } } catch (Exception e) { // REVISIT logging, fallback null-mapping e.printStackTrace(); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java index 1657575..a0b716f 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java @@ -10,8 +10,8 @@ import org.ovirt.engine.api.model.NetworkStatus; import org.ovirt.engine.api.model.Usages; import org.ovirt.engine.api.model.VLAN; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; -import org.ovirt.engine.core.compat.Guid; public class NetworkMapper { @@ -20,7 +20,7 @@ org.ovirt.engine.core.common.businessentities.network.Network entity = template != null ? template : new org.ovirt.engine.core.common.businessentities.network.Network(); entity.setCluster(template != null && template.getCluster() != null ? template.getCluster() : new NetworkCluster()); if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setName(model.getName()); @@ -29,7 +29,7 @@ entity.setDescription(model.getDescription()); } if (model.isSetDataCenter() && model.getDataCenter().isSetId()) { - entity.setDataCenterId(new Guid(model.getDataCenter().getId())); + entity.setDataCenterId(GuidUtils.asGuid(model.getDataCenter().getId())); } if (model.isSetIp()) { if (model.getIp().isSetAddress()) { diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NicMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NicMapper.java index 4b951e4..326e2d1 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NicMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NicMapper.java @@ -5,18 +5,18 @@ import org.ovirt.engine.api.model.Network; import org.ovirt.engine.api.model.NicInterface; import org.ovirt.engine.api.model.VM; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; -import org.ovirt.engine.core.compat.Guid; public class NicMapper { @Mapping(from = NIC.class, to = VmNetworkInterface.class) public static VmNetworkInterface map(NIC model, VmNetworkInterface template) { VmNetworkInterface entity = template != null ? template : new VmNetworkInterface(); if (model.isSetVm() && model.getVm().isSetId()) { - entity.setVmId(new Guid(model.getVm().getId())); + entity.setVmId(GuidUtils.asGuid(model.getVm().getId())); } if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setName(model.getName()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermissionMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermissionMapper.java index d4eeaee..b3b54ae 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermissionMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/PermissionMapper.java @@ -11,6 +11,7 @@ import org.ovirt.engine.api.model.User; import org.ovirt.engine.api.model.VM; import org.ovirt.engine.api.model.VmPool; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.compat.Guid; @@ -21,15 +22,15 @@ public static permissions map(Permission model, permissions template) { permissions entity = template != null ? template : new permissions(); if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetRole() && model.getRole().isSetId()) { - entity.setrole_id(new Guid(model.getRole().getId())); + entity.setrole_id(GuidUtils.asGuid(model.getRole().getId())); } if (model.isSetUser() && model.getUser().isSetId()) { - entity.setad_element_id(new Guid(model.getUser().getId())); + entity.setad_element_id(GuidUtils.asGuid(model.getUser().getId())); } else if (model.isSetGroup() && model.getGroup().isSetId()) { - entity.setad_element_id(new Guid(model.getGroup().getId())); + entity.setad_element_id(GuidUtils.asGuid(model.getGroup().getId())); } entity.setObjectId(map(model, template != null ? template.getObjectId() : null)); entity.setObjectType(map(model, template != null ? template.getObjectType() : null)); @@ -65,19 +66,19 @@ @Mapping(from = Permission.class, to = Guid.class) public static Guid map(Permission p, Guid template) { return p.isSetDataCenter() && p.getDataCenter().isSetId() - ? new Guid(p.getDataCenter().getId()) + ? GuidUtils.asGuid(p.getDataCenter().getId()) : p.isSetCluster() && p.getCluster().isSetId() - ? new Guid(p.getCluster().getId()) + ? GuidUtils.asGuid(p.getCluster().getId()) : p.isSetHost() && p.getHost().isSetId() - ? new Guid(p.getHost().getId()) + ? GuidUtils.asGuid(p.getHost().getId()) : p.isSetStorageDomain() && p.getStorageDomain().isSetId() - ? new Guid(p.getStorageDomain().getId()) + ? GuidUtils.asGuid(p.getStorageDomain().getId()) : p.isSetVm() && p.getVm().isSetId() - ? new Guid(p.getVm().getId()) + ? GuidUtils.asGuid(p.getVm().getId()) : p.isSetVmpool() && p.getVmpool().isSetId() - ? new Guid(p.getVmpool().getId()) + ? GuidUtils.asGuid(p.getVmpool().getId()) : p.isSetTemplate() && p.getTemplate().isSetId() - ? new Guid(p.getTemplate().getId()) + ? GuidUtils.asGuid(p.getTemplate().getId()) : template; } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QuotaMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QuotaMapper.java index f75bde7..0d077d5 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QuotaMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/QuotaMapper.java @@ -2,7 +2,7 @@ import org.ovirt.engine.api.model.DataCenter; import org.ovirt.engine.api.model.Quota; -import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.api.restapi.utils.GuidUtils; public class QuotaMapper { @@ -11,7 +11,7 @@ public static org.ovirt.engine.core.common.businessentities.Quota map(Quota model, org.ovirt.engine.core.common.businessentities.Quota template) { org.ovirt.engine.core.common.businessentities.Quota entity = (template==null) ? new org.ovirt.engine.core.common.businessentities.Quota() : template; if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setQuotaName(model.getName()); @@ -20,7 +20,7 @@ entity.setDescription(model.getDescription()); } if (model.isSetDataCenter()) { - entity.setStoragePoolId(new Guid(model.getDataCenter().getId())); + entity.setStoragePoolId(GuidUtils.asGuid(model.getDataCenter().getId())); } return entity; } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ReportedDeviceMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ReportedDeviceMapper.java index 6fa475e..0732306 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ReportedDeviceMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ReportedDeviceMapper.java @@ -9,8 +9,8 @@ import org.ovirt.engine.api.model.MAC; import org.ovirt.engine.api.model.ReportedDeviceType; import org.ovirt.engine.api.model.VM; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; public class ReportedDeviceMapper { @@ -40,7 +40,7 @@ public static VmGuestAgentInterface map(ReportedDevice model, VmGuestAgentInterface template) { VmGuestAgentInterface entity = template != null ? template : new VmGuestAgentInterface(); if (model.isSetVm() && model.getVm().isSetId()) { - entity.setVmId(new Guid(model.getVm().getId())); + entity.setVmId(GuidUtils.asGuid(model.getVm().getId())); } if (model.isSetName()) { entity.setInterfaceName(model.getName()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/RoleMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/RoleMapper.java index 15f0822..48034c3 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/RoleMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/RoleMapper.java @@ -1,8 +1,8 @@ package org.ovirt.engine.api.restapi.types; import org.ovirt.engine.api.model.Role; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.RoleType; -import org.ovirt.engine.core.compat.Guid; public class RoleMapper { @@ -21,7 +21,7 @@ public static org.ovirt.engine.core.common.businessentities.Role map(Role model, org.ovirt.engine.core.common.businessentities.Role template) { org.ovirt.engine.core.common.businessentities.Role entity = template != null ? template : new org.ovirt.engine.core.common.businessentities.Role(); if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setname(model.getName()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java index 2a29a0a..be94d39 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java @@ -13,8 +13,8 @@ import org.ovirt.engine.core.common.businessentities.storage_domains; import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.api.restapi.model.StorageFormat; +import org.ovirt.engine.api.restapi.utils.GuidUtils; public class StorageDomainMapper { @@ -22,7 +22,7 @@ public static StorageDomainStatic map(StorageDomain model, StorageDomainStatic template) { StorageDomainStatic entity = template != null ? template : new StorageDomainStatic(); if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setstorage_name(model.getName()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TagMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TagMapper.java index 66dbf9a..5b05828 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TagMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TagMapper.java @@ -2,8 +2,8 @@ import org.ovirt.engine.api.model.Tag; import org.ovirt.engine.api.model.TagParent; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.tags; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; public class TagMapper { @@ -13,7 +13,7 @@ tags entity = template != null ? template : new tags(); entity.setparent_id(parent(model, entity.getparent_id())); if (model.isSetId()) { - entity.settag_id(new Guid(model.getId())); + entity.settag_id(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.settag_name(model.getName()); @@ -38,7 +38,7 @@ if (model.isSetParent() && model.getParent().isSetTag() && model.getParent().getTag().isSetId()) { - return new Guid(model.getParent().getTag().getId()); + return GuidUtils.asGuid(model.getParent().getTag().getId()); } else { return current == null ? NGuid.Empty : current; } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java index a873007..576965f 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java @@ -17,12 +17,12 @@ import org.ovirt.engine.api.model.Usb; import org.ovirt.engine.api.model.UsbType; import org.ovirt.engine.api.model.VmType; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.api.restapi.utils.UsbMapperUtils; import org.ovirt.engine.core.common.businessentities.OriginType; import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VmTemplateStatus; -import org.ovirt.engine.core.compat.Guid; public class TemplateMapper { @@ -35,13 +35,13 @@ entity.setname(model.getName()); } if (model.isSetId()) { - entity.setId(new Guid(model.getId())); + entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetDescription()) { entity.setDescription(model.getDescription()); } if (model.isSetCluster() && model.getCluster().getId() != null) { - entity.setVdsGroupId(new Guid(model.getCluster().getId())); + entity.setVdsGroupId(GuidUtils.asGuid(model.getCluster().getId())); } if (model.isSetHighAvailability()) { if (model.getHighAvailability().isSetEnabled()) { @@ -133,13 +133,13 @@ staticVm.setVmName(model.getName()); } if (model.isSetId()) { - staticVm.setId(new Guid(model.getId())); + staticVm.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetDescription()) { staticVm.setDescription(model.getDescription()); } if (model.isSetCluster() && model.getCluster().getId() != null) { - staticVm.setVdsGroupId(new Guid(model.getCluster().getId())); + staticVm.setVdsGroupId(GuidUtils.asGuid(model.getCluster().getId())); } if (model.isSetHighAvailability()) { if (model.getHighAvailability().isSetEnabled()) { diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java index e2a477f..51d752a 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java @@ -43,6 +43,7 @@ import org.ovirt.engine.api.model.VmStatus; import org.ovirt.engine.api.model.VmType; import org.ovirt.engine.api.restapi.utils.CustomPropertiesParser; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.api.restapi.utils.UsbMapperUtils; import org.ovirt.engine.core.common.action.RunVmOnceParams; import org.ovirt.engine.core.common.businessentities.BootSequence; @@ -56,7 +57,6 @@ import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.utils.VmDeviceType; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.core.compat.Version; @@ -109,7 +109,7 @@ staticVm.setVmName(vm.getName()); } if (vm.isSetId()) { - staticVm.setId(new Guid(vm.getId())); + staticVm.setId(GuidUtils.asGuid(vm.getId())); } if (vm.isSetDescription()) { staticVm.setDescription(vm.getDescription()); @@ -121,10 +121,10 @@ staticVm.setMemSizeMb(DEFAULT_MEMORY_SIZE); } if (vm.isSetTemplate() && vm.getTemplate().getId() != null) { - staticVm.setVmtGuid(new Guid(vm.getTemplate().getId())); + staticVm.setVmtGuid(GuidUtils.asGuid(vm.getTemplate().getId())); } if (vm.isSetCluster() && vm.getCluster().getId() != null) { - staticVm.setVdsGroupId(new Guid(vm.getCluster().getId())); + staticVm.setVdsGroupId(GuidUtils.asGuid(vm.getCluster().getId())); } if (vm.isSetCpu()) { if (vm.getCpu().isSetMode()) { @@ -226,7 +226,7 @@ staticVm.setCustomProperties(CustomPropertiesParser.parse(vm.getCustomProperties().getCustomProperty())); } if (vm.isSetQuota() && vm.getQuota().isSetId()) { - staticVm.setQuotaId(new Guid(vm.getQuota().getId())); + staticVm.setQuotaId(GuidUtils.asGuid(vm.getQuota().getId())); } if (vm.isSetTunnelMigration()) { staticVm.setTunnelMigration(vm.isTunnelMigration()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmPoolMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmPoolMapper.java index 08dc98b..a643d04 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmPoolMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmPoolMapper.java @@ -2,9 +2,9 @@ import org.ovirt.engine.api.model.Cluster; import org.ovirt.engine.api.model.VmPool; +import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.vm_pools; -import org.ovirt.engine.core.compat.Guid; public class VmPoolMapper { @@ -12,7 +12,7 @@ public static vm_pools map(VmPool model, vm_pools template) { vm_pools entity = template != null ? template : new vm_pools(); if (model.isSetId()) { - entity.setvm_pool_id(new Guid(model.getId())); + entity.setvm_pool_id(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.setvm_pool_name(model.getName()); @@ -25,7 +25,7 @@ } if (model.isSetCluster()) { if (model.getCluster().isSetId()) { - entity.setvds_group_id(new Guid(model.getCluster().getId())); + entity.setvds_group_id(GuidUtils.asGuid(model.getCluster().getId())); } else if (model.getCluster().isSetName()) { entity.setvds_group_name(model.getCluster().getName()); } @@ -43,11 +43,11 @@ entity.setVmDescription(model.getDescription()); if (model.isSetTemplate() && model.getTemplate().isSetId()) { - entity.setVmtGuid(new Guid(model.getTemplate().getId())); + entity.setVmtGuid(GuidUtils.asGuid(model.getTemplate().getId())); } if (model.isSetCluster() && model.getCluster().isSetId()) { - entity.setVdsGroupId(new Guid(model.getCluster().getId())); + entity.setVdsGroupId(GuidUtils.asGuid(model.getCluster().getId())); } return entity; } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/GuidUtils.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/GuidUtils.java new file mode 100644 index 0000000..8ea6525 --- /dev/null +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/GuidUtils.java @@ -0,0 +1,15 @@ +package org.ovirt.engine.api.restapi.utils; + +import org.ovirt.engine.core.compat.Guid; + +public class GuidUtils { + + public static Guid asGuid(String id) { + try { + return new Guid(id); + }catch (IllegalArgumentException e) { + throw new MalformedIdException(e); + } + } + +} diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/MalformedIdException.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/MalformedIdException.java new file mode 100644 index 0000000..3e8e3d6 --- /dev/null +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/MalformedIdException.java @@ -0,0 +1,10 @@ +package org.ovirt.engine.api.restapi.utils; + +public class MalformedIdException extends IllegalArgumentException { + + private static final long serialVersionUID = 1L; + + public MalformedIdException(IllegalArgumentException e) { + super(e); + } +} diff --git a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/MappingTestHelper.java b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/MappingTestHelper.java index 34fa2fc..aac5d98 100644 --- a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/MappingTestHelper.java +++ b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/MappingTestHelper.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import org.ovirt.engine.api.restapi.utils.GuidUtils; -import org.ovirt.engine.core.compat.Guid; public class MappingTestHelper { @@ -218,7 +218,7 @@ } private static Object garble(Method m) { - return m.getName().endsWith("Id") ? new Guid(UUID.randomUUID()).toString() + return m.getName().endsWith("Id") ? GuidUtils.asGuid(UUID.randomUUID().toString()).toString() : new String(new byte[] { (byte) (65 + rand(26)), (byte) (65 + rand(26)), (byte) (65 + rand(26)) }); } -- To view, visit http://gerrit.ovirt.org/11758 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iebce833327654e1635632fb4a00ca8a3cf14fab5 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <rn...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches