diff --git a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/schema/AsyncHbaseSchemaService.java b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/schema/AsyncHbaseSchemaService.java index fed42bcb6..086ed319e 100644 --- a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/schema/AsyncHbaseSchemaService.java +++ b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/schema/AsyncHbaseSchemaService.java @@ -345,7 +345,7 @@ private List _getUniqueFastScan(MetricSchemaRecordQuery quer _logger.info("Using FastScan. Will skip rows while scanning."); - final List records = new ArrayList<>(); + final Set records = new TreeSet<>(); final ScanMetadata metadata = _constructScanMetadata(query); String namespace = SchemaService.convertToRegex(query.getNamespace()); @@ -390,7 +390,7 @@ private List _getUniqueFastScan(MetricSchemaRecordQuery quer rows = _getSingleRow(newScanStart, end, filterList, metadata.tableName); } - return records; + return new ArrayList<>(records); } diff --git a/ArgusSDK/src/main/java/com/salesforce/dva/argus/sdk/AlertService.java b/ArgusSDK/src/main/java/com/salesforce/dva/argus/sdk/AlertService.java index c7f59be2d..f9a5b1e0f 100644 --- a/ArgusSDK/src/main/java/com/salesforce/dva/argus/sdk/AlertService.java +++ b/ArgusSDK/src/main/java/com/salesforce/dva/argus/sdk/AlertService.java @@ -93,6 +93,14 @@ public List getAlerts(boolean includeSharedAlerts) throws IOException, To assertValidResponse(response, requestUrl); return fromJson(response.getResult(), new TypeReference>() { }); } + + public List getAlertsMeta(boolean includeSharedAlerts) throws IOException, TokenExpiredException { + String requestUrl = RESOURCE + "/meta?shared=" + includeSharedAlerts; + ArgusResponse response = getClient().executeHttpRequest(ArgusHttpClient.RequestType.GET, requestUrl, null); + + assertValidResponse(response, requestUrl); + return fromJson(response.getResult(), new TypeReference>() { }); + } /** * Returns the alert for the given ID. diff --git a/ArgusSDK/src/main/java/com/salesforce/dva/argus/sdk/DashboardService.java b/ArgusSDK/src/main/java/com/salesforce/dva/argus/sdk/DashboardService.java index c5a586350..3a043a2b0 100644 --- a/ArgusSDK/src/main/java/com/salesforce/dva/argus/sdk/DashboardService.java +++ b/ArgusSDK/src/main/java/com/salesforce/dva/argus/sdk/DashboardService.java @@ -149,5 +149,23 @@ public List getDashboards() throws IOException, TokenExpiredException assertValidResponse(response, requestUrl); return fromJson(response.getResult(), new TypeReference>() { }); } + + /** + * Returns the list of dashboards owned by the user. Each Dashboard only contains metadata (id, name, description etc.) about the dashbaord. + * + * @param shared True or false depending on whether shared dashboards must be retrieved along with dashboards owned by the user. + * + * @return The list of dashboards owned by the user. + * + * @throws IOException If the server cannot be reached. + * @throws TokenExpiredException If the token sent along with the request has expired + */ + public List getDashboardsMeta(boolean shared) throws IOException, TokenExpiredException { + String requestUrl = RESOURCE + "/meta?shared=" + shared; + ArgusResponse response = getClient().executeHttpRequest(ArgusHttpClient.RequestType.GET, requestUrl, null); + + assertValidResponse(response, requestUrl); + return fromJson(response.getResult(), new TypeReference>() { }); + } } /* Copyright (c) 2016, Salesforce.com, Inc. All rights reserved. */ diff --git a/ArgusSDK/src/test/java/com/salesforce/dva/argus/sdk/DashboardServiceTest.java b/ArgusSDK/src/test/java/com/salesforce/dva/argus/sdk/DashboardServiceTest.java index b24092fdd..d8159460c 100644 --- a/ArgusSDK/src/test/java/com/salesforce/dva/argus/sdk/DashboardServiceTest.java +++ b/ArgusSDK/src/test/java/com/salesforce/dva/argus/sdk/DashboardServiceTest.java @@ -85,6 +85,21 @@ public void testGetDashboards() throws IOException, TokenExpiredException { assertEquals(expected, result); } } + + @Test + public void testGetDashboardsMeta() throws IOException, TokenExpiredException { + try(ArgusService argusService = new ArgusService(getMockedClient("/DashboardServiceTest.json"))) { + DashboardService batchService = argusService.getDashboardService(); + List result = batchService.getDashboardsMeta(false); + + Dashboard persistedDashboard = _constructPersistedDashboard(); + persistedDashboard.setContent(null); + persistedDashboard.setShared(false); + List expected = Arrays.asList(new Dashboard[] { persistedDashboard }); + + assertEquals(expected, result); + } + } @Test public void testUpdateDashboard() throws IOException, TokenExpiredException { diff --git a/ArgusSDK/src/test/resources/DashboardServiceTest.json b/ArgusSDK/src/test/resources/DashboardServiceTest.json index a57637644..313c6c084 100644 --- a/ArgusSDK/src/test/resources/DashboardServiceTest.json +++ b/ArgusSDK/src/test/resources/DashboardServiceTest.json @@ -33,4 +33,11 @@ "status": 200, "message": "success", "jsonOutput" : "{\"id\":1,\"createdById\":1,\"createdDate\":1472282830936,\"modifiedById\":1,\"modifiedDate\":1472282830936,\"name\":\"TestName\",\"content\":\"UpdatedContent\",\"ownerName\":\"TestOwnerName\",\"shared\":true,\"description\":\"TestDescription\"}" +},{ + "type": "GET", + "endpoint": "/dashboards/meta?shared=false", + "jsonInput": null, + "status": 200, + "message": "success", + "jsonOutput": "[{\"id\":1,\"createdById\":1,\"createdDate\":1472282830936,\"modifiedById\":1,\"modifiedDate\":1472282830936,\"name\":\"TestName\",\"content\":null,\"ownerName\":\"TestOwnerName\",\"shared\":false,\"description\":\"TestDescription\"}]" }] \ No newline at end of file