Martin Mucha has uploaded a new change for review. Change subject: core,restapi>: removed separator inconsistency, removed duplicates. ......................................................................
core,restapi>: removed separator inconsistency, removed duplicates. Change-Id: Id2c72e0527f084e1453da7f720a23fe84dd94db6 Bug-Url: https://bugzilla.redhat.com/1104080 Signed-off-by: Martin Mucha <[email protected]> --- M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java M backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/QueryHelper.java M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java 3 files changed, 100 insertions(+), 78 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/43/28343/1 diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java index 2e803fe..9b8bbe8 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java @@ -358,7 +358,7 @@ @Test public void testGetAllMultiDiskImageSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("Disks:", SearchType.Disk); + SearchParameters searchParam = new SearchParameters("Disks : ", SearchType.Disk); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(diskImageResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -369,7 +369,7 @@ // The query Should be used is : "SELECT * FROM (SELECT *, ROW_NUMBER() OVER( ORDER BY disk_name ASC ) as RowNum // FROM (SELECT * FROM vm_images_view WHERE ( image_guid IN (SELECT vm_images_view.image_guid FROM // vm_images_view ))) as T1 ) as T2" - SearchParameters searchParam = new SearchParameters("Disk:", SearchType.Disk); + SearchParameters searchParam = new SearchParameters("Disk : ", SearchType.Disk); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(diskImageResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -377,7 +377,7 @@ @Test public void testGetAllVMSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("VM:", SearchType.VM); + SearchParameters searchParam = new SearchParameters("VM : ", SearchType.VM); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(vmResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -385,7 +385,7 @@ @Test public void testGetAllMultiVmSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("VMs:", SearchType.VM); + SearchParameters searchParam = new SearchParameters("VMs : ", SearchType.VM); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(vmResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -393,7 +393,7 @@ @Test public void testGetAllVdsSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("Host:", SearchType.VDS); + SearchParameters searchParam = new SearchParameters("Host : ", SearchType.VDS); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(vdsResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -401,7 +401,7 @@ @Test public void testGetAllMultiVdsSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("Hosts:", SearchType.VDS); + SearchParameters searchParam = new SearchParameters("Hosts : ", SearchType.VDS); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(vdsResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -412,7 +412,7 @@ // The original query should be : SELECT * FROM (SELECT *, ROW_NUMBER() OVER( ORDER BY name ASC ) as RowNum FROM // (SELECT * FROM vds_groups WHERE ( vds_group_id IN (SELECT vds_groups_storage_domain.vds_group_id FROM // vds_groups_storage_domain ))) as T1 ) as T2 - SearchParameters searchParam = new SearchParameters("Cluster:", SearchType.Cluster); + SearchParameters searchParam = new SearchParameters("Cluster : ", SearchType.Cluster); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(vdsGroupResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -423,7 +423,7 @@ // The original query should be : SELECT * FROM (SELECT *, ROW_NUMBER() OVER( ORDER BY name ASC ) as RowNum FROM // (SELECT * FROM vds_groups WHERE ( vds_group_id IN (SELECT vds_groups_storage_domain.vds_group_id FROM // vds_groups_storage_domain ))) as T1 ) as T2 - SearchParameters searchParam = new SearchParameters("Clusters:", SearchType.Cluster); + SearchParameters searchParam = new SearchParameters("Clusters : ", SearchType.Cluster); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(vdsGroupResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -431,7 +431,7 @@ @Test public void testGetAllStoragePoolSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("Datacenter:", SearchType.StoragePool); + SearchParameters searchParam = new SearchParameters("Datacenter : ", SearchType.StoragePool); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(storagePoolResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -441,7 +441,7 @@ @Ignore @Test public void testGetAllMultiStoragePoolSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("Datacenters:", SearchType.StoragePool); + SearchParameters searchParam = new SearchParameters("Datacenters : ", SearchType.StoragePool); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(storagePoolResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -449,7 +449,7 @@ @Test public void testGetAllGlusterVolumesSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("Volumes:", SearchType.GlusterVolume); + SearchParameters searchParam = new SearchParameters("Volumes : ", SearchType.GlusterVolume); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(glusterVolumeList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -457,7 +457,7 @@ @Test public void testGetAllQuotaSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("Quota:", SearchType.Quota); + SearchParameters searchParam = new SearchParameters("Quota : ", SearchType.Quota); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(quotaResultList == searchQuery.getQueryReturnValue().getReturnValue()); @@ -465,7 +465,7 @@ @Test public void testGetAllNetworkSearch() throws Exception { - SearchParameters searchParam = new SearchParameters("Network:", SearchType.Network); + SearchParameters searchParam = new SearchParameters("Network : ", SearchType.Network); SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); searchQuery.executeQueryCommand(); assertTrue(networkResultList == searchQuery.getQueryReturnValue().getReturnValue()); diff --git a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/QueryHelper.java b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/QueryHelper.java index 4e4f04e..26397d7 100644 --- a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/QueryHelper.java +++ b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/QueryHelper.java @@ -16,6 +16,7 @@ package org.ovirt.engine.api.common.util; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,7 +45,9 @@ public class QueryHelper { public static final String CONSTRAINT_PARAMETER = "search"; - private static final String RETURN_TYPE_SEPARTOR = " : "; + + //when changing please keep consistent with org.ovirt.engine.core.searchbackend.SearchObjects.SAFE_EXPRESSION_SEPARATOR + public static final String RETURN_TYPE_SEPARATOR = " : "; public static final String CURRENT_CONSTRAINT_PARAMETER = "current"; @@ -55,27 +58,34 @@ * REVISIT: can we safely just drop the return type specifier? * (doesn't seem to have any effect in the powershell case) */ - private static final Map<Class<?>, String> RETURN_TYPES; + /** + * REVISIT: RHEVM Admin Guide is not very clear on whether these + * return type specifiers should always be pluralized + */ + private static final Map<Class<?>, String> RETURN_TYPES = createReturnTypes(); - static { - RETURN_TYPES = new HashMap<Class<?>, String>(); - /** - * REVISIT: RHEVM Admin Guide is not very clear on whether these - * return type specifiers should always be pluralized - */ - RETURN_TYPES.put(VM.class, "VMs" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(Host.class, "Hosts" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(Cluster.class, "Clusters" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(DataCenter.class, "Datacenter" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(StorageDomain.class, "Storage" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(Template.class, "Template" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(User.class, "Users" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(Group.class, "Groups" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(VmPool.class, "Pools" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(Event.class, "Events" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(GlusterVolume.class, "Volumes" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(Disk.class, "Disks" + RETURN_TYPE_SEPARTOR); - RETURN_TYPES.put(Network.class, "Networks" + RETURN_TYPE_SEPARTOR); + private static Map<Class<?>, String> createReturnTypes() { + final Map<Class<?>, String> map = new HashMap<>(); + + putReturnType(map, VM.class, "VMs"); + putReturnType(map, Host.class, "Hosts"); + putReturnType(map, Cluster.class, "Clusters"); + putReturnType(map, DataCenter.class, "Datacenter"); + putReturnType(map, StorageDomain.class, "Storage"); + putReturnType(map, Template.class, "Template"); + putReturnType(map, User.class, "Users"); + putReturnType(map, Group.class, "Groups"); + putReturnType(map, VmPool.class, "Pools"); + putReturnType(map, Event.class, "Events"); + putReturnType(map, GlusterVolume.class, "Volumes"); + putReturnType(map, Disk.class, "Disks"); + putReturnType(map, Network.class, "Networks"); + + return Collections.unmodifiableMap(map); + } + + private static void putReturnType(Map<Class<?>, String> map, Class<?> clazz, String name) { + map.put(clazz, name + RETURN_TYPE_SEPARATOR); } /** diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java index c6f50bb..f3d33bf 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java @@ -55,52 +55,64 @@ private static final String HOST_BY_CPU = "Host: sortby cpu_usage desc"; private static final String DATACENTER_BY_NAME = "DataCenter: sortby name"; private static final String VM_BY_STATUS = "Vms: status=Up or status=PoweringUp or status=MigratingTo or status=WaitForLaunch or status=RebootInProgress or status=PoweringDown or status=Paused or status=Unknown sortby cpu_usage desc"; - @SuppressWarnings("serial") - private static final Set<String> SAFE_SEARCH_EXPR = Collections.unmodifiableSet(new HashSet<String>() { - { - final char SEPARATOR = ':'; - add(VDS_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDS_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VM_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VM_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(AUDIT_OBJ_NAME.toLowerCase() + SEPARATOR); - add(AUDIT_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(TEMPLATE_OBJ_NAME.toLowerCase() + SEPARATOR); - add(TEMPLATE_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_USER_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_USER_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_GROUP_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_GROUP_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_POOL_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_POOL_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_CLUSTER_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_CLUSTER_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_STORAGE_POOL_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_STORAGE_DOMAIN_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_STORAGE_DOMAIN_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME.toLowerCase() + SEPARATOR); - add(DISK_OBJ_NAME.toLowerCase() + SEPARATOR); - add(DISK_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(GLUSTER_VOLUME_OBJ_NAME.toLowerCase() + SEPARATOR); - add(GLUSTER_VOLUME_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(QUOTA_OBJ_NAME.toLowerCase() + SEPARATOR); - add(QUOTA_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(NETWORK_OBJ_NAME.toLowerCase() + SEPARATOR); - add(NETWORK_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(PROVIDER_OBJ_NAME.toLowerCase() + SEPARATOR); - add(PROVIDER_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(ALERT.toLowerCase()); - add(ERROR.toLowerCase()); - add(HOST_BY_CPU.toLowerCase()); - add(DATACENTER_BY_NAME.toLowerCase()); - add(VM_BY_STATUS.toLowerCase()); - add(INSTANCE_TYPE_OBJ_NAME.toLowerCase() + SEPARATOR); - add(INSTANCE_TYPE_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); - add(IMAGE_TYPE_OBJ_NAME.toLowerCase() + SEPARATOR); - add(IMAGE_TYPE_PLU_OBJ_NAME.toLowerCase() + SEPARATOR); + //when changing please keep consistent with org.ovirt.engine.api.common.util.QueryHelper.RETURN_TYPE_SEPARATOR + public static final String SAFE_EXPRESSION_SEPARATOR = " : "; + private static final Set<String> SAFE_SEARCH_EXPR = createSafeExpressionSet(); + + private static Set<String> createSafeExpressionSet() { + return createSafeExpressionSet( + VDS_OBJ_NAME, + VDS_PLU_OBJ_NAME, + VM_OBJ_NAME, + VM_PLU_OBJ_NAME, + AUDIT_OBJ_NAME, + AUDIT_PLU_OBJ_NAME, + TEMPLATE_OBJ_NAME, + TEMPLATE_PLU_OBJ_NAME, + VDC_USER_OBJ_NAME, + VDC_USER_PLU_OBJ_NAME, + VDC_GROUP_OBJ_NAME, + VDC_GROUP_PLU_OBJ_NAME, + VDC_POOL_OBJ_NAME, + VDC_POOL_PLU_OBJ_NAME, + VDC_CLUSTER_OBJ_NAME, + VDC_CLUSTER_PLU_OBJ_NAME, + VDC_STORAGE_POOL_OBJ_NAME, + VDC_STORAGE_DOMAIN_OBJ_NAME, + VDC_STORAGE_DOMAIN_PLU_OBJ_NAME, + VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME, + DISK_OBJ_NAME, + DISK_PLU_OBJ_NAME, + GLUSTER_VOLUME_OBJ_NAME, + GLUSTER_VOLUME_PLU_OBJ_NAME, + QUOTA_OBJ_NAME, + QUOTA_PLU_OBJ_NAME, + NETWORK_OBJ_NAME, + NETWORK_PLU_OBJ_NAME, + PROVIDER_OBJ_NAME, + PROVIDER_PLU_OBJ_NAME, + ALERT, + ERROR, + HOST_BY_CPU, + DATACENTER_BY_NAME, + VM_BY_STATUS, + INSTANCE_TYPE_OBJ_NAME, + INSTANCE_TYPE_PLU_OBJ_NAME, + IMAGE_TYPE_OBJ_NAME, + IMAGE_TYPE_PLU_OBJ_NAME + ); + } + + private static Set<String> createSafeExpressionSet(String ... searchObjects) { + final Set<String> set = new HashSet<String>(searchObjects.length); + + for (String searchObject : searchObjects) { + set.add(searchObject.toLowerCase() + SAFE_EXPRESSION_SEPARATOR); } - }); + + return Collections.unmodifiableSet(set); + } /** * Determines if a search expression is safe. -- To view, visit http://gerrit.ovirt.org/28343 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id2c72e0527f084e1453da7f720a23fe84dd94db6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
