diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ffc4e7..67583e3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,9 +3,14 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for gCube Catalogue (gCat) Client
-## [v2.0.0-SNAPSHOT] [r5.0.0] -
+## [v2.0.0-SNAPSHOT]
-- Switched JSON management to gcube-jackson [#19735]
+
+
+## [v1.2.2]
+
+- Added count method for Item collection [#20627]
+- Added count method for Organization, Group and Profile collection [#20629]
## [v1.2.1] [r4.18.0] - 2019-12-20
diff --git a/pom.xml b/pom.xml
index 6188154..ac199f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
org.gcube.distribution
gcube-bom
- 2.0.0-SNAPSHOT
+ 2.0.1
pom
import
@@ -59,12 +59,11 @@
org.slf4j
slf4j-api
-
org.gcube.common
gcube-jackson-databind
- test
+
junit
junit
diff --git a/src/main/java/org/gcube/gcat/client/Group.java b/src/main/java/org/gcube/gcat/client/Group.java
index 7615264..b1a284a 100644
--- a/src/main/java/org/gcube/gcat/client/Group.java
+++ b/src/main/java/org/gcube/gcat/client/Group.java
@@ -8,6 +8,8 @@ import java.util.Map;
import javax.ws.rs.WebApplicationException;
import javax.xml.ws.WebServiceException;
+import org.gcube.com.fasterxml.jackson.databind.JsonNode;
+import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.gcat.api.GCatConstants;
/**
@@ -23,6 +25,22 @@ public class Group extends GCatClient implements org.gcube.gcat.api.interfaces.G
super(enforcedServiceURL, GROUPS);
}
+ @Override
+ public int count() throws WebServiceException {
+ Map queryParams = new HashMap<>();
+ queryParams.put(GCatConstants.COUNT_PARAMETER, String.valueOf(true));
+ String ret = this.list(queryParams);
+ ObjectMapper objectMapper = new ObjectMapper();
+ try {
+ JsonNode jsonNode = objectMapper.readTree(ret);
+ return jsonNode.get(GCatConstants.COUNT_KEY).asInt();
+ }catch (WebApplicationException e) {
+ throw e;
+ }catch (Exception e) {
+ throw new WebApplicationException(e);
+ }
+ }
+
@Override
public String list(int limit, int offset) throws WebApplicationException {
Map queryParams = new HashMap<>();
diff --git a/src/main/java/org/gcube/gcat/client/Item.java b/src/main/java/org/gcube/gcat/client/Item.java
index ece0301..f387c0c 100644
--- a/src/main/java/org/gcube/gcat/client/Item.java
+++ b/src/main/java/org/gcube/gcat/client/Item.java
@@ -8,6 +8,8 @@ import java.util.Map;
import javax.ws.rs.WebApplicationException;
import javax.xml.ws.WebServiceException;
+import org.gcube.com.fasterxml.jackson.databind.JsonNode;
+import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.gcat.api.GCatConstants;
/**
@@ -23,11 +25,27 @@ public class Item extends GCatClient implements org.gcube.gcat.api.interfaces.It
super(enforcedServiceURL, ITEMS);
}
+ @Override
+ public int count() throws WebServiceException {
+ Map queryParams = new HashMap<>();
+ queryParams.put(GCatConstants.COUNT_PARAMETER, String.valueOf(true));
+ String ret = this.list(queryParams);
+ ObjectMapper objectMapper = new ObjectMapper();
+ try {
+ JsonNode jsonNode = objectMapper.readTree(ret);
+ return jsonNode.get(GCatConstants.COUNT_KEY).asInt();
+ }catch (WebApplicationException e) {
+ throw e;
+ }catch (Exception e) {
+ throw new WebApplicationException(e);
+ }
+ }
+
/**
- * List the item in the organization correspondent to the current VRE.
+ * List the item in the organisation correspondent to the current VRE.
*
* If the client is entitled to run at VO or ROOT level the method return all the item in all the organization
- * in the catalogue. To filter per organization used the method {@link #list(int, int, String)}
+ * in the catalogue. To filter per organisation used the method {@link #list(int, int, String)}
*/
@Override
public String list(int limit, int offset) throws WebApplicationException {
@@ -43,7 +61,7 @@ public class Item extends GCatClient implements org.gcube.gcat.api.interfaces.It
}
/**
- * List the item of a specific organization.
+ * List the item of a specific organisation.
* This API is only available if the client is entitles to run at VO and ROOT level.
*/
public String list(int limit, int offset, String organizationName) throws WebApplicationException {
@@ -103,4 +121,5 @@ public class Item extends GCatClient implements org.gcube.gcat.api.interfaces.It
super.delete(true, name);
return null;
}
+
}
diff --git a/src/main/java/org/gcube/gcat/client/Organization.java b/src/main/java/org/gcube/gcat/client/Organization.java
index 7d79bcf..b31e9bc 100644
--- a/src/main/java/org/gcube/gcat/client/Organization.java
+++ b/src/main/java/org/gcube/gcat/client/Organization.java
@@ -6,7 +6,10 @@ import java.util.HashMap;
import java.util.Map;
import javax.ws.rs.WebApplicationException;
+import javax.xml.ws.WebServiceException;
+import org.gcube.com.fasterxml.jackson.databind.JsonNode;
+import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.gcat.api.GCatConstants;
/**
@@ -22,6 +25,22 @@ public class Organization extends GCatClient implements org.gcube.gcat.api.inter
super(enforcedServiceURL, ORGANIZATIONS);
}
+ @Override
+ public int count() throws WebServiceException {
+ Map queryParams = new HashMap<>();
+ queryParams.put(GCatConstants.COUNT_PARAMETER, String.valueOf(true));
+ String ret = this.list(queryParams);
+ ObjectMapper objectMapper = new ObjectMapper();
+ try {
+ JsonNode jsonNode = objectMapper.readTree(ret);
+ return jsonNode.get(GCatConstants.COUNT_KEY).asInt();
+ }catch (WebApplicationException e) {
+ throw e;
+ }catch (Exception e) {
+ throw new WebApplicationException(e);
+ }
+ }
+
@Override
public String list(int limit, int offset) throws WebApplicationException {
Map queryParams = new HashMap<>();
diff --git a/src/main/java/org/gcube/gcat/client/Profile.java b/src/main/java/org/gcube/gcat/client/Profile.java
index 53b0f19..582422f 100644
--- a/src/main/java/org/gcube/gcat/client/Profile.java
+++ b/src/main/java/org/gcube/gcat/client/Profile.java
@@ -3,11 +3,16 @@ package org.gcube.gcat.client;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
+import javax.xml.ws.WebServiceException;
+import org.gcube.com.fasterxml.jackson.databind.JsonNode;
+import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.gcat.api.GCatConstants;
/**
@@ -23,6 +28,22 @@ public class Profile extends GCatClient implements org.gcube.gcat.api.interfaces
super(enforcedServiceURL, PROFILES);
}
+ @Override
+ public int count() throws WebServiceException {
+ Map queryParams = new HashMap<>();
+ queryParams.put(GCatConstants.COUNT_PARAMETER, String.valueOf(true));
+ String ret = this.list(queryParams);
+ ObjectMapper objectMapper = new ObjectMapper();
+ try {
+ JsonNode jsonNode = objectMapper.readTree(ret);
+ return jsonNode.get(GCatConstants.COUNT_KEY).asInt();
+ }catch (WebApplicationException e) {
+ throw e;
+ }catch (Exception e) {
+ throw new WebApplicationException(e);
+ }
+ }
+
@Override
public String list() throws WebApplicationException {
return super.list(null);
diff --git a/src/test/java/org/gcube/gcat/client/ContextTest.java b/src/test/java/org/gcube/gcat/client/ContextTest.java
index dc49df9..a1e2355 100644
--- a/src/test/java/org/gcube/gcat/client/ContextTest.java
+++ b/src/test/java/org/gcube/gcat/client/ContextTest.java
@@ -1,10 +1,8 @@
-/**
- *
- */
package org.gcube.gcat.client;
import java.io.IOException;
import java.io.InputStream;
+import java.net.MalformedURLException;
import java.util.Properties;
import org.gcube.common.authorization.client.Constants;
@@ -31,7 +29,12 @@ public class ContextTest {
protected static Properties properties;
protected static final String PROPERTIES_FILENAME = "token.properties";
- public static final String DEFAULT_TEST_SCOPE_NAME;
+ protected static final String GCAT_PROPERTIES_FILENAME = "gcat.properties";
+ public static final String GCAT_URL_PROPERTY = "GCAT_URL_PROPERTY";
+ public static final String GCAT_URL;
+
+
+ public static final String DEFAULT_TEST_CONTEXT_NAME;
static {
properties = new Properties();
@@ -44,14 +47,49 @@ public class ContextTest {
throw new RuntimeException(e);
}
- DEFAULT_TEST_SCOPE_NAME = "/pred4s/preprod/preVRE";
+ //DEFAULT_TEST_CONTEXT_NAME = "/pred4s/preprod/preVRE";
+ DEFAULT_TEST_CONTEXT_NAME = "/gcube/devsec/devVRE";
+
+ try {
+ setContextByName(DEFAULT_TEST_CONTEXT_NAME);
+ } catch(Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ Properties gcatProperties = new Properties();
+ input = ContextTest.class.getClassLoader().getResourceAsStream(GCAT_PROPERTIES_FILENAME);
+ try {
+ // load the properties file
+ gcatProperties.load(input);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+ GCAT_URL = gcatProperties.getProperty(GCAT_URL_PROPERTY);
+
+ if(GCAT_URL!=null){
+ try {
+ GCatClientDiscovery.forceToURL(GCAT_URL);
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
- public static String getCurrentScope(String token) throws ObjectNotFound, Exception {
+ public static String getCurrentContextFullName() {
+ String token = SecurityTokenProvider.instance.get();
+ AuthorizationEntry authorizationEntry = null;
+ try {
+ authorizationEntry = Constants.authorizationService().get(token);
+ } catch(Exception e) {
+ return ScopeProvider.instance.get();
+ }
+ return authorizationEntry.getContext();
+ }
+
+ public static String getContextFullName(String token) throws ObjectNotFound, Exception {
AuthorizationEntry authorizationEntry = Constants.authorizationService().get(token);
- String context = authorizationEntry.getContext();
- logger.info("Context of token {} is {}", token, context);
- return context;
+ return authorizationEntry.getContext();
}
public static void setContextByName(String fullContextName) throws ObjectNotFound, Exception {
@@ -67,12 +105,12 @@ public class ContextTest {
String qualifier = authorizationEntry.getQualifier();
Caller caller = new Caller(clientInfo, qualifier);
AuthorizationProvider.instance.set(caller);
- ScopeProvider.instance.set(getCurrentScope(token));
+ ScopeProvider.instance.set(getContextFullName(token));
}
@BeforeClass
public static void beforeClass() throws Exception {
- setContextByName(DEFAULT_TEST_SCOPE_NAME);
+ setContextByName(DEFAULT_TEST_CONTEXT_NAME);
}
@AfterClass
diff --git a/src/test/java/org/gcube/gcat/client/GroupTest.java b/src/test/java/org/gcube/gcat/client/GroupTest.java
index 4339f4c..3676e78 100644
--- a/src/test/java/org/gcube/gcat/client/GroupTest.java
+++ b/src/test/java/org/gcube/gcat/client/GroupTest.java
@@ -1,6 +1,7 @@
package org.gcube.gcat.client;
import java.io.IOException;
+import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -30,6 +31,13 @@ public class GroupTest extends ContextTest {
private static final String DISPLAY_NAME_KEY = "display_name";
private static final String DISPLAY_NAME_VALUE = "0000 Display Name";
+ @Test
+ public void testCount() throws MalformedURLException {
+ Group group = new Group();
+ int count = group.count();
+ logger.debug("The number of groups is {}", count);
+ }
+
// @Test
public void completeTest() throws IOException {
diff --git a/src/test/java/org/gcube/gcat/client/ItemTest.java b/src/test/java/org/gcube/gcat/client/ItemTest.java
index b82d943..9e380b9 100644
--- a/src/test/java/org/gcube/gcat/client/ItemTest.java
+++ b/src/test/java/org/gcube/gcat/client/ItemTest.java
@@ -1,6 +1,7 @@
package org.gcube.gcat.client;
import java.io.IOException;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
@@ -72,6 +73,13 @@ public class ItemTest extends ContextTest {
*/
}
+ @Test
+ public void testCount() throws MalformedURLException {
+ Item item = new Item();
+ int count = item.count();
+ logger.debug("The items published in the organization corresponding to the VRE {} are {}", ContextTest.getCurrentContextFullName(), count);
+ }
+
@Test
public void completeTest() throws IOException {
ObjectMapper mapper = new ObjectMapper();
diff --git a/src/test/java/org/gcube/gcat/client/OrganizationTest.java b/src/test/java/org/gcube/gcat/client/OrganizationTest.java
index d838097..7541ffd 100644
--- a/src/test/java/org/gcube/gcat/client/OrganizationTest.java
+++ b/src/test/java/org/gcube/gcat/client/OrganizationTest.java
@@ -1,6 +1,7 @@
package org.gcube.gcat.client;
import java.io.IOException;
+import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -30,6 +31,13 @@ public class OrganizationTest extends ContextTest {
private static final String DISPLAY_NAME_KEY = "display_name";
private static final String DISPLAY_NAME_VALUE = "0000 Display Name";
+ @Test
+ public void testCount() throws MalformedURLException {
+ Organization organization = new Organization();
+ int count = organization.count();
+ logger.debug("The number of organizations is {}", count);
+ }
+
// @Test
public void completeTest() throws IOException {
diff --git a/src/test/java/org/gcube/gcat/client/ProfileTest.java b/src/test/java/org/gcube/gcat/client/ProfileTest.java
index cd4f25a..9a4b0f5 100644
--- a/src/test/java/org/gcube/gcat/client/ProfileTest.java
+++ b/src/test/java/org/gcube/gcat/client/ProfileTest.java
@@ -1,6 +1,7 @@
package org.gcube.gcat.client;
import java.io.StringReader;
+import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -23,6 +24,13 @@ public class ProfileTest extends ContextTest {
private static Logger logger = LoggerFactory.getLogger(ProfileTest.class);
+ @Test
+ public void testCount() throws MalformedURLException {
+ Profile profile = new Profile();
+ int count = profile.count();
+ logger.debug("The number of profiles is {}", count);
+ }
+
@Test
public void safeTest() throws Exception {
diff --git a/src/test/resources/.gitignore b/src/test/resources/.gitignore
index a8e4366..eb42d60 100644
--- a/src/test/resources/.gitignore
+++ b/src/test/resources/.gitignore
@@ -1 +1,2 @@
/token.properties
+/gcat.properties