Ported count method from version 1.4.4 to 2.0.0-SNAPSHOT

This commit is contained in:
Luca Frosini 2021-02-09 15:53:31 +01:00
parent 85a5436b59
commit 084369799c
12 changed files with 171 additions and 19 deletions

View File

@ -3,9 +3,14 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for gCube Catalogue (gCat) Client # 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 ## [v1.2.1] [r4.18.0] - 2019-12-20

View File

@ -30,7 +30,7 @@
<dependency> <dependency>
<groupId>org.gcube.distribution</groupId> <groupId>org.gcube.distribution</groupId>
<artifactId>gcube-bom</artifactId> <artifactId>gcube-bom</artifactId>
<version>2.0.0-SNAPSHOT</version> <version>2.0.1</version>
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
@ -59,12 +59,11 @@
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId> <artifactId>slf4j-api</artifactId>
</dependency> </dependency>
<!-- Test Dependencies -->
<dependency> <dependency>
<groupId>org.gcube.common</groupId> <groupId>org.gcube.common</groupId>
<artifactId>gcube-jackson-databind</artifactId> <artifactId>gcube-jackson-databind</artifactId>
<scope>test</scope>
</dependency> </dependency>
<!-- Test Dependencies -->
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>

View File

@ -8,6 +8,8 @@ import java.util.Map;
import javax.ws.rs.WebApplicationException; import javax.ws.rs.WebApplicationException;
import javax.xml.ws.WebServiceException; 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; 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); super(enforcedServiceURL, GROUPS);
} }
@Override
public int count() throws WebServiceException {
Map<String, String> 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 @Override
public String list(int limit, int offset) throws WebApplicationException { public String list(int limit, int offset) throws WebApplicationException {
Map<String, String> queryParams = new HashMap<>(); Map<String, String> queryParams = new HashMap<>();

View File

@ -8,6 +8,8 @@ import java.util.Map;
import javax.ws.rs.WebApplicationException; import javax.ws.rs.WebApplicationException;
import javax.xml.ws.WebServiceException; 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; 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); super(enforcedServiceURL, ITEMS);
} }
@Override
public int count() throws WebServiceException {
Map<String, String> 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 * 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 @Override
public String list(int limit, int offset) throws WebApplicationException { 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. * 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 { 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); super.delete(true, name);
return null; return null;
} }
} }

View File

@ -6,7 +6,10 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.ws.rs.WebApplicationException; 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; import org.gcube.gcat.api.GCatConstants;
/** /**
@ -22,6 +25,22 @@ public class Organization extends GCatClient implements org.gcube.gcat.api.inter
super(enforcedServiceURL, ORGANIZATIONS); super(enforcedServiceURL, ORGANIZATIONS);
} }
@Override
public int count() throws WebServiceException {
Map<String, String> 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 @Override
public String list(int limit, int offset) throws WebApplicationException { public String list(int limit, int offset) throws WebApplicationException {
Map<String, String> queryParams = new HashMap<>(); Map<String, String> queryParams = new HashMap<>();

View File

@ -3,11 +3,16 @@ package org.gcube.gcat.client;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.ws.rs.WebApplicationException; import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType; 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; import org.gcube.gcat.api.GCatConstants;
/** /**
@ -23,6 +28,22 @@ public class Profile extends GCatClient implements org.gcube.gcat.api.interfaces
super(enforcedServiceURL, PROFILES); super(enforcedServiceURL, PROFILES);
} }
@Override
public int count() throws WebServiceException {
Map<String, String> 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 @Override
public String list() throws WebApplicationException { public String list() throws WebApplicationException {
return super.list(null); return super.list(null);

View File

@ -1,10 +1,8 @@
/**
*
*/
package org.gcube.gcat.client; package org.gcube.gcat.client;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.MalformedURLException;
import java.util.Properties; import java.util.Properties;
import org.gcube.common.authorization.client.Constants; import org.gcube.common.authorization.client.Constants;
@ -31,7 +29,12 @@ public class ContextTest {
protected static Properties properties; protected static Properties properties;
protected static final String PROPERTIES_FILENAME = "token.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 { static {
properties = new Properties(); properties = new Properties();
@ -44,14 +47,49 @@ public class ContextTest {
throw new RuntimeException(e); 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); AuthorizationEntry authorizationEntry = Constants.authorizationService().get(token);
String context = authorizationEntry.getContext(); return authorizationEntry.getContext();
logger.info("Context of token {} is {}", token, context);
return context;
} }
public static void setContextByName(String fullContextName) throws ObjectNotFound, Exception { public static void setContextByName(String fullContextName) throws ObjectNotFound, Exception {
@ -67,12 +105,12 @@ public class ContextTest {
String qualifier = authorizationEntry.getQualifier(); String qualifier = authorizationEntry.getQualifier();
Caller caller = new Caller(clientInfo, qualifier); Caller caller = new Caller(clientInfo, qualifier);
AuthorizationProvider.instance.set(caller); AuthorizationProvider.instance.set(caller);
ScopeProvider.instance.set(getCurrentScope(token)); ScopeProvider.instance.set(getContextFullName(token));
} }
@BeforeClass @BeforeClass
public static void beforeClass() throws Exception { public static void beforeClass() throws Exception {
setContextByName(DEFAULT_TEST_SCOPE_NAME); setContextByName(DEFAULT_TEST_CONTEXT_NAME);
} }
@AfterClass @AfterClass

View File

@ -1,6 +1,7 @@
package org.gcube.gcat.client; package org.gcube.gcat.client;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; 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_KEY = "display_name";
private static final String DISPLAY_NAME_VALUE = "0000 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 // @Test
public void completeTest() throws IOException { public void completeTest() throws IOException {

View File

@ -1,6 +1,7 @@
package org.gcube.gcat.client; package org.gcube.gcat.client;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; 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 @Test
public void completeTest() throws IOException { public void completeTest() throws IOException {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();

View File

@ -1,6 +1,7 @@
package org.gcube.gcat.client; package org.gcube.gcat.client;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; 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_KEY = "display_name";
private static final String DISPLAY_NAME_VALUE = "0000 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 // @Test
public void completeTest() throws IOException { public void completeTest() throws IOException {

View File

@ -1,6 +1,7 @@
package org.gcube.gcat.client; package org.gcube.gcat.client;
import java.io.StringReader; import java.io.StringReader;
import java.net.MalformedURLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -23,6 +24,13 @@ public class ProfileTest extends ContextTest {
private static Logger logger = LoggerFactory.getLogger(ProfileTest.class); 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 @Test
public void safeTest() throws Exception { public void safeTest() throws Exception {

View File

@ -1 +1,2 @@
/token.properties /token.properties
/gcat.properties