Fixing new config creation/update

This commit is contained in:
Luca Frosini 2022-02-22 15:39:41 +01:00
parent b0e6aff70c
commit 1a4f5e81a4
8 changed files with 282 additions and 190 deletions

View File

@ -2,7 +2,7 @@
<!DOCTYPE xml>
<application mode='online'>
<name>${project.artifactId}</name>
<group>${project.groupId}</group>
<group>${serviceClass}</group>
<version>${project.version}</version>
<description>${project.description}</description>
</application>

View File

@ -21,6 +21,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<webappDirectory>${project.basedir}${file.separator}src${file.separator}main${file.separator}webapp${file.separator}WEB-INF</webappDirectory>
<serviceClass>data-catalogue</serviceClass>
</properties>
<scm>

View File

@ -3,6 +3,7 @@ package org.gcube.gcat.configuration;
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@ -12,13 +13,14 @@ import java.util.Set;
import java.util.UUID;
import javax.ws.rs.InternalServerErrorException;
import javax.ws.rs.NotFoundException;
import javax.ws.rs.WebApplicationException;
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
import org.gcube.common.encryption.encrypter.StringEncrypter;
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
import org.gcube.common.resources.gcore.GenericResource;
import org.gcube.common.resources.gcore.ServiceEndpoint;
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
@ -27,6 +29,7 @@ import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
import org.gcube.common.resources.gcore.ServiceEndpoint.Runtime;
import org.gcube.common.resources.gcore.common.Platform;
import org.gcube.common.resources.gcore.utils.Group;
import org.gcube.gcat.api.GCatConstants;
import org.gcube.gcat.api.configuration.CatalogueConfiguration;
import org.gcube.informationsystem.publisher.RegistryPublisher;
import org.gcube.informationsystem.publisher.RegistryPublisherFactory;
@ -85,16 +88,18 @@ public class GCoreISConfigurationProxy {
private final static String OLD_NAME = "CKanDataCatalogue";
protected final String context;
protected ObjectMapper mapper;
protected ServiceCatalogueConfiguration catalogueConfiguration;
public GCoreISConfigurationProxy(String context) {
this.context = context;
this.mapper = new ObjectMapper();
}
public GCoreISConfigurationProxy(String context, ServiceCatalogueConfiguration catalogueConfiguration) {
this(context);
this.catalogueConfiguration = catalogueConfiguration;
this.mapper = new ObjectMapper();
}
public ServiceCatalogueConfiguration getCatalogueConfiguration() {
@ -119,10 +124,122 @@ public class GCoreISConfigurationProxy {
return stringBuffer.toString();
}
protected ServiceCatalogueConfiguration getCatalogueConfigurationFromIS() {
return getOLDCatalogueConfigurationFromIS();
protected ObjectNode setValue(ObjectNode node, String key, String value) throws IOException {
if(value.toLowerCase().compareTo("true")==0 || value.toLowerCase().compareTo("false")==0) {
node.put(key, Boolean.parseBoolean(value));
return node;
}
if(value.startsWith("{") || value.startsWith("[")){
JsonNode n = mapper.readTree(value);
node.set(key, n);
return node;
}
node.put(key, value);
return node;
}
protected ServiceCatalogueConfiguration getConfiguration(ServiceEndpoint serviceEndpoint) throws IOException {
Profile profile = serviceEndpoint.profile();
AccessPoint accessPoint = getAccessPoint(profile);
Map<String, Property> propertyMap = accessPoint.propertyMap();
ObjectNode node = mapper.createObjectNode();
node.put(CatalogueConfiguration.ID_KEY, serviceEndpoint.id());
for(String key : propertyMap.keySet()) {
String value = propertyMap.get(key).value().trim();
setValue(node, key, value);
}
return mapper.treeToValue(node, ServiceCatalogueConfiguration.class);
}
/**
* Retrieve endpoints information from IS for DataCatalogue URL
*
* @return list of endpoints for ckan data catalogue
* @throws Exception
*/
private List<ServiceEndpoint> getServiceEndpoints(String category, String name) {
SimpleQuery query = queryFor(ServiceEndpoint.class);
query.addCondition("$resource/Profile/Category/text() eq '" + category + "'");
query.addCondition("$resource/Profile/Name/text() eq '" + name + "'");
DiscoveryClient<ServiceEndpoint> client = clientFor(ServiceEndpoint.class);
List<ServiceEndpoint> serviceEndpoints = client.submit(query);
return serviceEndpoints;
}
protected ServiceEndpoint getServiceEndpoint() {
List<ServiceEndpoint> serviceEndpoints = getServiceEndpoints(GCatConstants.CONFIGURATION_CATEGORY, GCatConstants.CONFIGURATION_NAME);
if (serviceEndpoints==null || serviceEndpoints.size() == 0) {
logger.error("There is no {} having Category {} and Name {} in this context.",
ServiceEndpoint.class.getSimpleName(), GCatConstants.CONFIGURATION_CATEGORY, GCatConstants.CONFIGURATION_NAME);
return null;
}
ServiceEndpoint serviceEndpoint = serviceEndpoints.get(0);
return serviceEndpoint;
}
protected ServiceCatalogueConfiguration getCatalogueConfigurationFromIS() throws IOException {
ServiceEndpoint serviceEndpoint = getServiceEndpoint();
if(serviceEndpoint==null) {
return getOLDCatalogueConfigurationFromIS();
}
return getConfiguration(serviceEndpoint);
}
@Deprecated
private ServiceEndpoint getOldServiceEndpoint() {
List<ServiceEndpoint> serviceEndpoints = getServiceEndpoints(OLD_CATEGORY, OLD_NAME);
if (serviceEndpoints.size() == 0) {
logger.error("There is no {} having Category {} and Name {} in this context.",
ServiceEndpoint.class.getSimpleName(), OLD_CATEGORY, OLD_NAME);
return null;
}
ServiceEndpoint serviceEndpoint = null;
if (serviceEndpoints.size() > 1) {
logger.info("Too many {} having Category {} and Name {} in this context. Looking for the one that has the property {}",
ServiceEndpoint.class.getSimpleName(), OLD_CATEGORY, OLD_NAME, IS_ROOT_MASTER_PROPERTY_KEY);
for (ServiceEndpoint se : serviceEndpoints) {
Iterator<AccessPoint> accessPointIterator = se.profile().accessPoints().iterator();
while (accessPointIterator.hasNext()) {
ServiceEndpoint.AccessPoint accessPoint = accessPointIterator.next();
// get the is master property
Property entry = accessPoint.propertyMap().get(IS_ROOT_MASTER_PROPERTY_KEY);
String isMaster = entry != null ? entry.value() : null;
if (isMaster == null || !isMaster.equals("true")) {
continue;
}
// set this variable
serviceEndpoint = se;
return serviceEndpoint;
}
}
// if none of them was master, throw an exception
if (serviceEndpoint == null) {
throw new InternalServerErrorException(
"Too many catalogue configuration on IS and no one with MASTER property");
}
} else {
serviceEndpoint = serviceEndpoints.get(0);
}
return serviceEndpoint;
}
@Deprecated
protected ServiceCatalogueConfiguration getOLDCatalogueConfigurationFromIS() {
ServiceCatalogueConfiguration catalogueConfiguration = new ServiceCatalogueConfiguration(context);
try {
@ -130,7 +247,7 @@ public class GCoreISConfigurationProxy {
ServiceEndpoint serviceEndpoint = getOldServiceEndpoint();
if (serviceEndpoint == null) {
throw new InternalServerErrorException("No CKAN configuration on IS");
throw new NotFoundException("No configuration found in this context");
}
catalogueConfiguration.setID(serviceEndpoint.id());
@ -208,87 +325,23 @@ public class GCoreISConfigurationProxy {
return catalogueConfiguration;
}
/**
* Retrieve endpoints information from IS for DataCatalogue URL
*
* @return list of endpoints for ckan data catalogue
* @throws Exception
*/
private List<ServiceEndpoint> getServiceEndpoints(String category, String name) {
SimpleQuery query = queryFor(ServiceEndpoint.class);
query.addCondition("$resource/Profile/Category/text() eq '" + category + "'");
query.addCondition("$resource/Profile/Name/text() eq '" + name + "'");
DiscoveryClient<ServiceEndpoint> client = clientFor(ServiceEndpoint.class);
List<ServiceEndpoint> serviceEndpoints = client.submit(query);
if(serviceEndpoints.size() == 0) {
String error = String.format("There is no %s having category '%s' and name '%s' in this context.",
ServiceEndpoint.class.getSimpleName(), category, name);
logger.error(error);
throw new InternalServerErrorException(error);
}
return serviceEndpoints;
}
/**
* Retrieve endpoints information from IS for DataCatalogue URL
* @return list of endpoints for ckan data catalogue
* @throws Exception
*/
private ServiceEndpoint getOldServiceEndpoint() {
List<ServiceEndpoint> serviceEndpoints = getServiceEndpoints(OLD_CATEGORY, OLD_NAME);
if (serviceEndpoints.size() == 0) {
logger.error("There is no {} having Category {} and Name {} in this context.",
ServiceEndpoint.class.getSimpleName(), OLD_CATEGORY, OLD_NAME);
return null;
}
ServiceEndpoint serviceEndpoint = null;
if (serviceEndpoints.size() > 1) {
logger.info("Too many {} having Category {} and Name {} in this context. Looking for the one that has the property {}",
ServiceEndpoint.class.getSimpleName(), OLD_CATEGORY, OLD_NAME, IS_ROOT_MASTER_PROPERTY_KEY);
for (ServiceEndpoint se : serviceEndpoints) {
Iterator<AccessPoint> accessPointIterator = se.profile().accessPoints().iterator();
while (accessPointIterator.hasNext()) {
ServiceEndpoint.AccessPoint accessPoint = accessPointIterator.next();
// get the is master property
Property entry = accessPoint.propertyMap().get(IS_ROOT_MASTER_PROPERTY_KEY);
String isMaster = entry != null ? entry.value() : null;
if (isMaster == null || !isMaster.equals("true")) {
continue;
}
// set this variable
serviceEndpoint = se;
return serviceEndpoint;
}
}
// if none of them was master, throw an exception
if (serviceEndpoint == null) {
throw new InternalServerErrorException(
"Too many catalogue configuration on IS and no one with MASTER property");
}
} else {
serviceEndpoint = serviceEndpoints.get(0);
}
return serviceEndpoint;
}
// CKAN Instance info
@Deprecated
private final static String CKAN_DB_SERVICE_ENDPOINT_CATEGORY= "Database";
@Deprecated
private final static String CKAN_DB_SERVICE_ENDPOINT_NAME = "CKanDatabase";
@Deprecated
protected ServiceCKANDB getCKANDBFromIS() {
try {
List<ServiceEndpoint> serviceEndpoints = getServiceEndpoints(CKAN_DB_SERVICE_ENDPOINT_CATEGORY, CKAN_DB_SERVICE_ENDPOINT_NAME);
if(serviceEndpoints.size() == 0) {
String error = String.format("There is no %s having category '%s' and name '%s' in this context.",
ServiceEndpoint.class.getSimpleName(), CKAN_DB_SERVICE_ENDPOINT_CATEGORY, CKAN_DB_SERVICE_ENDPOINT_NAME);
logger.error(error);
throw new InternalServerErrorException(error);
}
ServiceEndpoint serviceEndpoint = null;
if(serviceEndpoints.size() > 1) {
@ -349,10 +402,14 @@ public class GCoreISConfigurationProxy {
}
@Deprecated
public static final String GENERIC_RESOURCE_SECONDARY_TYPE_FOR_ORGANIZATIONS = "ApplicationProfile";
@Deprecated
public static final String GENERIC_RESOURCE_NAME_FOR_ORGANIZATIONS = "Supported CKAN Organizations";
@Deprecated
public static final String GENERIC_RESOURCE_CKAN_ORGANIZATIONS = "CKANOrganizations";
@Deprecated
private List<GenericResource> getGenericResources() {
SimpleQuery query = ICFactory.queryFor(GenericResource.class);
query.addCondition(String.format("$resource/Profile/SecondaryType/text() eq '%s'",
@ -379,6 +436,7 @@ public class GCoreISConfigurationProxy {
return objectMapper.writeValueAsString(arrayNode);
}
@Deprecated
protected Set<String> unmarshallSupportedOrganizations(String supportedOrganizationsJsonArray){
try {
ObjectMapper objectMapper = new ObjectMapper();
@ -399,18 +457,7 @@ public class GCoreISConfigurationProxy {
}
}
protected void removeAllGenericResources() {
List<GenericResource> genericResources = getGenericResources();
removeAllGenericResources(genericResources);
}
protected void removeAllGenericResources(List<GenericResource> genericResources) {
RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
for(GenericResource genericResource : genericResources) {
registryPublisher.remove(genericResource);
}
}
@Deprecated
protected Set<String> getSupportedOrganizationsFromGenericResource() {
List<GenericResource> genericResources = getGenericResources();
@ -427,15 +474,17 @@ public class GCoreISConfigurationProxy {
Set<String> supportedOrganizatins = unmarshallSupportedOrganizations(supportedOrganizationsJsonArray);
removeAllGenericResources(genericResources);
return supportedOrganizatins;
}
public void delete() {
@Deprecated
public void deleteOldConfiguration() {
RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
deleteOldConfiguration(registryPublisher);
}
@Deprecated
protected void deleteOldConfiguration(RegistryPublisher registryPublisher) {
ServiceEndpoint serviceEndpoint = getOldServiceEndpoint();
if(serviceEndpoint!=null) {
registryPublisher.remove(serviceEndpoint);
@ -449,6 +498,17 @@ public class GCoreISConfigurationProxy {
}
}
public void delete() {
RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
ServiceEndpoint serviceEndpoint = getServiceEndpoint();
if(serviceEndpoint!=null) {
registryPublisher.remove(serviceEndpoint);
}
deleteOldConfiguration();
}
protected Property addProperty(Group<Property> properties, String name, String value) {
return addProperty(properties, name, value, false);
}
@ -456,38 +516,41 @@ public class GCoreISConfigurationProxy {
protected Property addProperty(Group<Property> properties, String name, String value, boolean encrypted) {
Property property = new Property();
property.nameAndValue(name, value);
property.encrypted(encrypted);
if(encrypted) {
property.encrypted(encrypted);
}
properties.add(property);
return property;
}
protected Group<Property> setAccessPointProperties(AccessPoint accessPoint, boolean update) throws JsonProcessingException {
protected Group<Property> setAccessPointProperties(AccessPoint accessPoint, String address, boolean update) throws JsonProcessingException {
accessPoint.description(String.format("Access Point %s by gcat %s", update ? "updated" : "created", getGcatVersion().toString()));
accessPoint.address(catalogueConfiguration.getCkanURL());
// TODO Change ASAP
//accessPoint.name("gcat Configuration");
accessPoint.name("CKan Data Catalogue");
accessPoint.address(address);
accessPoint.name(GCatConstants.CONFIGURATION_NAME);
Group<Property> properties = accessPoint.properties();
addProperty(properties, SOLR_INDEX_ADDRESS_PROPERTY_KEY, catalogueConfiguration.getSolrURL());
addProperty(properties, DEFAULT_ORGANIZATION_PROPERTY_KEY, catalogueConfiguration.getDefaultOrganization());
addProperty(properties, API_KEY_PROPERTY_KEY, catalogueConfiguration.getSysAdminToken(), true);
addProperty(properties, SOCIAL_POST_PROPERTY_KEY, Boolean.toString(catalogueConfiguration.isSocialPostEnabled()));
addProperty(properties, ALERT_USERS_ON_POST_CREATION_PROPERTY_KEY, Boolean.toString(catalogueConfiguration.isNotificationToUsersEnabled()));
addProperty(properties, MODERATION_ENABLED_KEY_PROPERTY_KEY, Boolean.toString(catalogueConfiguration.isModerationEnabled()));
addProperty(properties, SUPPORTED_ORGANIZATION_PROPERTY_KEY, marshallSupportedOrganizations());
JsonNode jsonNode = mapper.valueToTree(catalogueConfiguration);
Iterator<String> iterator = jsonNode.fieldNames();
while (iterator.hasNext()) {
String key = iterator.next();
JsonNode valueJsonNode = jsonNode.get(key);
String value = valueJsonNode.toString();
addProperty(properties, key, value);
}
return properties;
}
private final static String PLATFORM_NAME = "Tomcat";
protected Version getGcatVersion() {
ApplicationContext applicationContext = ContextProvider.get();
ApplicationConfiguration applicationConfiguration = applicationContext.configuration();
Version version = new Version(applicationConfiguration.version());
return version;
try {
ApplicationContext applicationContext = ContextProvider.get();
ApplicationConfiguration applicationConfiguration = applicationContext.configuration();
Version version = new Version(applicationConfiguration.version());
return version;
}catch (Exception e) {
return new Version("2.2.0");
}
}
/**
@ -509,19 +572,15 @@ public class GCoreISConfigurationProxy {
protected Platform setPlatformProperty(Platform platform) {
/*
* <Platform>
* <Name>Tomcat</Name>
*
* The version of gcat
* <Name>gcat</Name>
* <!-- The version of gcat -->
* <Version>2</Version>
* <MinorVersion>2</MinorVersion>
* <RevisionVersion>0</RevisionVersion>
* <BuildVersion>0</BuildVersion>
* </Platform>
*/
// TODO change to gcat ASAP
// platform.name("gcat");
platform.name(PLATFORM_NAME);
platform.name(GCatConstants.SERVICE_NAME);
platform = setVersion(platform);
return platform;
}
@ -531,13 +590,19 @@ public class GCoreISConfigurationProxy {
}
protected Runtime setRuntimeProperties(Runtime runtime) {
ApplicationContext applicationContext = ContextProvider.get();
ContainerContext containerContext = applicationContext.container();
ContainerConfiguration containerConfiguration = containerContext.configuration();
String runningOn = getRunningOn(containerConfiguration);
runtime.hostedOn(runningOn);
runtime.ghnId(containerContext.id());
runtime.status(applicationContext.configuration().mode().toString());
try {
ApplicationContext applicationContext = ContextProvider.get();
ContainerContext containerContext = applicationContext.container();
ContainerConfiguration containerConfiguration = containerContext.configuration();
String runningOn = getRunningOn(containerConfiguration);
runtime.hostedOn(runningOn);
runtime.ghnId(containerContext.id());
runtime.status(applicationContext.configuration().mode().toString());
}catch (Exception e) {
runtime.hostedOn("localhost");
runtime.ghnId("");
runtime.status("READY");
}
return runtime;
}
@ -548,47 +613,27 @@ public class GCoreISConfigurationProxy {
* <Name>CKanDataCatalogue</Name>
* <Description>gCat Configuration created/updated by the service via REST</Description>
*/
profile.category(OLD_CATEGORY);
profile.name(OLD_NAME);
profile.category(GCatConstants.CONFIGURATION_CATEGORY);
profile.name(GCatConstants.CONFIGURATION_NAME);
profile.description(String.format("gCat configuration %s by the service via REST", update ? "updated" : "created"));
return profile;
}
protected boolean isRootMaster(ServiceEndpoint serviceEndpoint) {
Profile profile = serviceEndpoint.profile();
AccessPoint accessPoint = getAccessPoint(profile);
Map<String, Property> propertyMap = accessPoint.propertyMap();
if (propertyMap.containsKey(IS_ROOT_MASTER_PROPERTY_KEY)) {
if (propertyMap.get(IS_ROOT_MASTER_PROPERTY_KEY).value().trim().equalsIgnoreCase("true")) {
return true;
}
}
return false;
}
// @Deprecated
// protected boolean isRootMaster(ServiceEndpoint serviceEndpoint) {
// Profile profile = serviceEndpoint.profile();
// AccessPoint accessPoint = getAccessPoint(profile);
// Map<String, Property> propertyMap = accessPoint.propertyMap();
// if (propertyMap.containsKey(IS_ROOT_MASTER_PROPERTY_KEY)) {
// if (propertyMap.get(IS_ROOT_MASTER_PROPERTY_KEY).value().trim().equalsIgnoreCase("true")) {
// return true;
// }
// }
// return false;
// }
protected ServiceEndpoint createServiceEndpoint(ServiceEndpoint serviceEndpoint) throws Exception {
boolean update = serviceEndpoint != null;
boolean rootMaster = false;
if(update) {
if(catalogueConfiguration.getSysAdminToken()==null) {
Profile profile = serviceEndpoint.profile();
AccessPoint accessPoint = getAccessPoint(profile);
Map<String, Property> propertyMap = accessPoint.propertyMap();
// add this host
String ckanURL = accessPoint.address();
catalogueConfiguration.setCkanURL(ckanURL);
// retrieve sys admin token
String encryptedSysAdminToken = propertyMap.get(API_KEY_PROPERTY_KEY).value();
catalogueConfiguration.setSysAdminToken(StringEncrypter.getEncrypter().decrypt(encryptedSysAdminToken));
}
rootMaster = isRootMaster(serviceEndpoint);
}
serviceEndpoint = new ServiceEndpoint();
serviceEndpoint.setId(catalogueConfiguration.getID());
@ -604,12 +649,8 @@ public class GCoreISConfigurationProxy {
Group<AccessPoint> accessPoints = profile.accessPoints();
AccessPoint accessPoint = accessPoints.add();
Group<Property> properties = setAccessPointProperties(accessPoint, update);
if(rootMaster) {
addProperty(properties, IS_ROOT_MASTER_PROPERTY_KEY, Boolean.toString(rootMaster));
}
setAccessPointProperties(accessPoint, runtime.hostedOn(), update);
return serviceEndpoint;
}

View File

@ -1,5 +1,6 @@
package org.gcube.gcat.configuration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
@ -10,7 +11,7 @@ public class Version implements Comparable<Version> {
/**
* Regex validating the version
*/
public final static String VERSION_REGEX = "^[1-9][0-9]{0,}\\.(0|([1-9][0-9]{0,}))\\.(0|([1-9][0-9]{0,}))$";
public final static String VERSION_REGEX = "^[1-9][0-9]{0,}\\.(0|([1-9][0-9]{0,}))\\.(0|([1-9][0-9]{0,}))";
private final static Pattern VERSION_PATTERN;
@ -35,10 +36,13 @@ public class Version implements Comparable<Version> {
}
public void setVersion(String version) {
if(!VERSION_PATTERN.matcher(version).find()) {
Matcher matcher = VERSION_PATTERN.matcher(version);
if(!matcher.find()) {
throw new RuntimeException("The provided version (i.e. " + version + ") MUST comply with the regex " + VERSION_REGEX);
}
String[] parts = version.split("\\.");
String matched = matcher.group(0);
String[] parts = matched.split("\\.");
this.major = Integer.valueOf(parts[0]);
this.minor = Integer.valueOf(parts[1]);
this.revision = Integer.valueOf(parts[2]);

View File

@ -15,6 +15,7 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
@ -82,7 +83,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
String configuration = gotCatalogueConfiguration.toJsonString();
logger.debug("The new configuration in context {} is {}", catalogueConfiguration.getContext(), configuration);
return configuration;
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -103,7 +104,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
responseBuilder.entity(ret).type(GCatConstants.APPLICATION_JSON_CHARSET_UTF_8);
}
return responseBuilder.build();
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -117,7 +118,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
try {
checkContext(context);
return read();
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -135,7 +136,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
responseBuilder.entity(configuration).type(GCatConstants.APPLICATION_JSON_CHARSET_UTF_8);
}
return responseBuilder.build();
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -151,7 +152,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
ServiceCatalogueConfiguration catalogueConfiguration = ServiceCatalogueConfiguration.getServiceCatalogueConfiguration(json);
checkContext(context, catalogueConfiguration);
return createOrUpdate(catalogueConfiguration);
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -171,7 +172,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
responseBuilder.entity(configuration).type(GCatConstants.APPLICATION_JSON_CHARSET_UTF_8);
}
return responseBuilder.build();
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -186,7 +187,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
try {
checkContext(context);
return patch(json);
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -226,7 +227,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
responseBuilder.entity(ret).type(GCatConstants.APPLICATION_JSON_CHARSET_UTF_8);
}
return responseBuilder.build();
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -234,7 +235,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
}
@DELETE
@PathParam(CONTEXT_FULLNAME_PARAMETER)
@Path("/{" + CONTEXT_FULLNAME_PARAMETER + "}")
public Response delete(@PathParam(CONTEXT_FULLNAME_PARAMETER) String context,
@QueryParam(GCatConstants.PURGE_QUERY_PARAMETER) @DefaultValue("false") Boolean purge) throws WebServiceException {
try {
@ -244,7 +245,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
}else {
return delete();
}
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -257,7 +258,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
try {
CatalogueConfigurationFactory.renew();
return Response.status(Status.NO_CONTENT).build();
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -265,12 +266,12 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
}
@PURGE
@PathParam(CONTEXT_FULLNAME_PARAMETER)
@Path("/{" + CONTEXT_FULLNAME_PARAMETER + "}")
public Response purge(@PathParam(CONTEXT_FULLNAME_PARAMETER) String context) throws WebServiceException {
try {
checkContext(context);
return purge();
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);
@ -283,7 +284,7 @@ public class Configuration extends BaseREST implements org.gcube.gcat.api.interf
try {
CatalogueConfigurationFactory.purge();
return Response.status(Status.NO_CONTENT).build();
}catch (WebServiceException e) {
}catch (WebApplicationException e) {
throw e;
}catch (Exception e) {
throw new InternalServerErrorException(e);

View File

@ -1,9 +1,18 @@
package org.gcube.gcat.configuration;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Set;
import java.util.stream.Collectors;
import org.gcube.common.authorization.utils.manager.SecretManager;
import org.gcube.gcat.ContextTest;
import org.gcube.smartgears.ContextProvider;
import org.gcube.smartgears.configuration.application.ApplicationConfiguration;
import org.gcube.smartgears.configuration.application.DefaultApplicationConfiguration;
import org.gcube.smartgears.context.application.ApplicationContext;
import org.gcube.smartgears.context.application.DefaultApplicationContext;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
@ -41,7 +50,7 @@ public class GCoreISConfigurationProxyTest extends ContextTest {
logger.info("All as JsonArray [{},{},{},{}]", json, secondJson, decryptedJson, thirdJson);
}
@Test
// @Test
public void updateConfigurationToNewVersion() throws Exception {
ContextTest.setContextByName("/gcube/devsec/devVRE");
String context = SecretManager.instance.get().getContext();
@ -54,6 +63,18 @@ public class GCoreISConfigurationProxyTest extends ContextTest {
logger.debug("Updated configuration {}", json);
}
public static String DEVVRE_CONFIG_JSON = "devvre.conf.json";
@Test
public void createConfiguration() throws Exception {
ContextTest.setContextByName("/gcube/devsec/devVRE");
String context = SecretManager.instance.get().getContext();
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(DEVVRE_CONFIG_JSON);
String json = new BufferedReader(new InputStreamReader(inputStream)).lines().collect(Collectors.joining("\n"));
ServiceCatalogueConfiguration catalogueConfiguration = ServiceCatalogueConfiguration.getServiceCatalogueConfiguration(json);
GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context, catalogueConfiguration);
gCoreISConfigurationProxy.createOnIS(null);
}
// protected GenericResource instantiateGenericResource(String secondaryType, String name, String xml) throws Exception {

View File

@ -0,0 +1,23 @@
package org.gcube.gcat.configuration;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class VersionTest {
private static final Logger logger = LoggerFactory.getLogger(VersionTest.class);
@Test
public void testVersions() {
String[] versions = new String[]{"2.2.0-SNAPSHOT", "1.3.5", "1.4.5-beta", "1.5.6-gcore"};
for(String v : versions) {
Version version = new Version(v);
logger.debug("Version is {}", version);
}
}
}

View File

@ -5,3 +5,4 @@
/config.properties.old-authz
/config.properties.old
/config.properties-new-authz
/devvre.conf.json