Reorganizing code
This commit is contained in:
parent
f8c9033f3c
commit
0fd2f53a5d
|
@ -0,0 +1,83 @@
|
|||
package org.gcube.gcat;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.gcube.common.authorization.utils.manager.SecretManagerProvider;
|
||||
import org.gcube.gcat.rest.RequestFilter;
|
||||
import org.gcube.smartgears.ApplicationManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public class GCatInitializator implements ApplicationManager {
|
||||
|
||||
/**
|
||||
* Logger
|
||||
*/
|
||||
private static Logger logger = LoggerFactory.getLogger(GCatInitializator.class);
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* The method discover the plugins available on classpath and their own
|
||||
* supported capabilities and publish a ServiceEndpoint with the
|
||||
* discovered information.
|
||||
* Furthermore create/connect to DB
|
||||
*/
|
||||
@Override
|
||||
public void onInit() {
|
||||
RequestFilter requestFilter = new RequestFilter();
|
||||
try {
|
||||
requestFilter.filter(null);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
String context = SecretManagerProvider.instance.get().getContext();
|
||||
|
||||
logger.trace(
|
||||
"\n-------------------------------------------------------\n"
|
||||
+ "GCat is Starting on context {}\n"
|
||||
+ "-------------------------------------------------------",
|
||||
context);
|
||||
|
||||
|
||||
logger.trace(
|
||||
"\n-------------------------------------------------------\n"
|
||||
+ "GCat Started Successfully on context {}\n"
|
||||
+ "-------------------------------------------------------",
|
||||
context);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* This function is invoked before the service will stop and unpublish the
|
||||
* resource from the IS to maintain the infrastructure integrity.
|
||||
* Furthermore close the connection to DB.
|
||||
*/
|
||||
@Override
|
||||
public void onShutdown(){
|
||||
RequestFilter requestFilter = new RequestFilter();
|
||||
try {
|
||||
requestFilter.filter(null);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
String context = SecretManagerProvider.instance.get().getContext();
|
||||
|
||||
logger.trace(
|
||||
"\n-------------------------------------------------------\n"
|
||||
+ "GCat is Stopping on context {}\n"
|
||||
+ "-------------------------------------------------------",
|
||||
context);
|
||||
|
||||
logger.trace(
|
||||
"\n-------------------------------------------------------\n"
|
||||
+ "GCat Stopped Successfully on context {}\n"
|
||||
+ "-------------------------------------------------------",
|
||||
context);
|
||||
}
|
||||
}
|
|
@ -5,6 +5,7 @@ import java.util.Map;
|
|||
|
||||
import org.gcube.common.authorization.utils.manager.SecretManagerProvider;
|
||||
import org.gcube.gcat.configuration.isproxies.GCoreISConfigurationProxy;
|
||||
import org.gcube.gcat.configuration.isproxies.ISConfigurationProxyFactory;
|
||||
import org.gcube.gcat.configuration.isproxies.FacetBasedISConfigurationProxy;
|
||||
import org.gcube.gcat.configuration.service.ServiceCatalogueConfiguration;
|
||||
import org.gcube.gcat.persistence.ckan.CKANUserCache;
|
||||
|
@ -21,7 +22,7 @@ public class CatalogueConfigurationFactory {
|
|||
}
|
||||
|
||||
private static ServiceCatalogueConfiguration load(String context) {
|
||||
FacetBasedISConfigurationProxy restISConfigurationProxy = new FacetBasedISConfigurationProxy(context);
|
||||
FacetBasedISConfigurationProxy restISConfigurationProxy = ISConfigurationProxyFactory.getInstance(context);
|
||||
ServiceCatalogueConfiguration serviceCatalogueConfiguration = restISConfigurationProxy.getCatalogueConfiguration();
|
||||
if(serviceCatalogueConfiguration == null) {
|
||||
GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context);
|
||||
|
@ -31,16 +32,18 @@ public class CatalogueConfigurationFactory {
|
|||
}
|
||||
|
||||
private static void purgeFromIS(String context) {
|
||||
FacetBasedISConfigurationProxy restISConfigurationProxy = new FacetBasedISConfigurationProxy(context);
|
||||
FacetBasedISConfigurationProxy restISConfigurationProxy = ISConfigurationProxyFactory.getInstance(context);
|
||||
restISConfigurationProxy.delete();
|
||||
GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context);
|
||||
gCoreISConfigurationProxy.delete();
|
||||
}
|
||||
|
||||
private static void createOrUpdateOnIS(String context, ServiceCatalogueConfiguration catalogueConfiguration) throws Exception {
|
||||
FacetBasedISConfigurationProxy restISConfigurationProxy = new FacetBasedISConfigurationProxy(context,catalogueConfiguration);
|
||||
FacetBasedISConfigurationProxy restISConfigurationProxy = ISConfigurationProxyFactory.getInstance(context);
|
||||
restISConfigurationProxy.setCatalogueConfiguration(catalogueConfiguration);
|
||||
restISConfigurationProxy.createOrUpdateOnIS();
|
||||
GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context, catalogueConfiguration);
|
||||
GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context);
|
||||
gCoreISConfigurationProxy.setCatalogueConfiguration(catalogueConfiguration);
|
||||
gCoreISConfigurationProxy.createOrUpdateOnIS();
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.gcube.gcat.configuration.service.ServiceCatalogueConfiguration;
|
|||
import org.gcube.informationsystem.model.impl.relations.ConsistsOfImpl;
|
||||
import org.gcube.informationsystem.model.reference.entities.Entity;
|
||||
import org.gcube.informationsystem.model.reference.properties.Encrypted;
|
||||
import org.gcube.informationsystem.model.reference.properties.Header;
|
||||
import org.gcube.informationsystem.model.reference.relations.ConsistsOf;
|
||||
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClient;
|
||||
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClientFactory;
|
||||
|
@ -119,14 +120,20 @@ public class FacetBasedISConfigurationProxy extends ISConfigurationProxy<SimpleF
|
|||
objectMapper = new ObjectMapper();
|
||||
resourceRegistryClient = ResourceRegistryClientFactory.create();
|
||||
resourceRegistryPublisher = ResourceRegistryPublisherFactory.create();
|
||||
|
||||
}
|
||||
|
||||
public FacetBasedISConfigurationProxy(String context, ServiceCatalogueConfiguration catalogueConfiguration) {
|
||||
super(context, catalogueConfiguration);
|
||||
objectMapper = new ObjectMapper();
|
||||
resourceRegistryClient = ResourceRegistryClientFactory.create();
|
||||
resourceRegistryPublisher = ResourceRegistryPublisherFactory.create();
|
||||
// public FacetBasedISConfigurationProxy(String context, ServiceCatalogueConfiguration catalogueConfiguration) {
|
||||
// super(context, catalogueConfiguration);
|
||||
// objectMapper = new ObjectMapper();
|
||||
// resourceRegistryClient = ResourceRegistryClientFactory.create();
|
||||
// resourceRegistryPublisher = ResourceRegistryPublisherFactory.create();
|
||||
// }
|
||||
|
||||
public VirtualService getVirtualService() {
|
||||
if(virtualService==null) {
|
||||
virtualService = queryVirtualService();
|
||||
}
|
||||
return virtualService;
|
||||
}
|
||||
|
||||
public File getJsonQueryFromFile(String filename) throws Exception {
|
||||
|
@ -175,9 +182,13 @@ public class FacetBasedISConfigurationProxy extends ISConfigurationProxy<SimpleF
|
|||
return getUniqueEntity(entities, jsonQueryAsString);
|
||||
}
|
||||
|
||||
protected VirtualService queryVirtualService() throws Exception {
|
||||
VirtualService virtualService = (VirtualService) queryEntity(GET_CATALOGUE_VIRTUAL_SERVICE_FILENAME);
|
||||
return virtualService;
|
||||
protected VirtualService queryVirtualService() throws InternalServerErrorException {
|
||||
try {
|
||||
VirtualService virtualService = (VirtualService) queryEntity(GET_CATALOGUE_VIRTUAL_SERVICE_FILENAME);
|
||||
return virtualService;
|
||||
}catch (Exception e) {
|
||||
throw new InternalServerErrorException(e);
|
||||
}
|
||||
}
|
||||
|
||||
protected Configuration queryGcatConfiguration() throws Exception {
|
||||
|
@ -205,12 +216,12 @@ public class FacetBasedISConfigurationProxy extends ISConfigurationProxy<SimpleF
|
|||
return accessPointFacet;
|
||||
}
|
||||
|
||||
protected ServiceCatalogueConfiguration setGcatConfiguration(ServiceCatalogueConfiguration catalogueConfiguration) throws Exception {
|
||||
SimpleFacet configurationSimpleFacet = getISResource();
|
||||
UUID uuid = configurationSimpleFacet.getHeader().getUUID();
|
||||
if(uuid!=null) {
|
||||
catalogueConfiguration.setID(uuid.toString());
|
||||
protected ServiceCatalogueConfiguration setConfigurationInfoFromSimpleFacet(SimpleFacet configurationSimpleFacet, ServiceCatalogueConfiguration catalogueConfiguration) throws Exception {
|
||||
Header header = configurationSimpleFacet.getHeader();
|
||||
if(header!=null && header.getUUID()!=null) {
|
||||
catalogueConfiguration.setID(header.getUUID().toString());
|
||||
}
|
||||
|
||||
catalogueConfiguration.setModerationEnabled((boolean) configurationSimpleFacet.getAdditionalProperty(CatalogueConfiguration.MODERATION_ENABLED_KEY));
|
||||
catalogueConfiguration.setNotificationToUsersEnabled((boolean) configurationSimpleFacet.getAdditionalProperty(CatalogueConfiguration.NOTIFICATION_TO_USER_ENABLED_KEY));
|
||||
catalogueConfiguration.setSocialPostEnabled((boolean) configurationSimpleFacet.getAdditionalProperty(CatalogueConfiguration.SOCIAL_POST_ENABLED_KEY));
|
||||
|
@ -244,7 +255,7 @@ public class FacetBasedISConfigurationProxy extends ISConfigurationProxy<SimpleF
|
|||
}
|
||||
|
||||
if(forceUpdate) {
|
||||
updateOnIS(configurationSimpleFacet);
|
||||
updateOnIS();
|
||||
}
|
||||
|
||||
return catalogueConfiguration;
|
||||
|
@ -280,14 +291,34 @@ public class FacetBasedISConfigurationProxy extends ISConfigurationProxy<SimpleF
|
|||
return catalogueConfiguration;
|
||||
}
|
||||
|
||||
protected SimpleFacet instatiateSimpleFacetUsingDefaultValues(ServiceCatalogueConfiguration catalogueConfiguration) {
|
||||
protected SimpleFacet getSimpleFacetFromConfiguration(ServiceCatalogueConfiguration catalogueConfiguration) {
|
||||
SimpleFacet simpleFacet = new SimpleFacetImpl();
|
||||
if(catalogueConfiguration.getID()!=null) {
|
||||
UUID uuid = null;
|
||||
try {
|
||||
uuid = UUID.fromString(catalogueConfiguration.getID());
|
||||
simpleFacet.getHeader().setUUID(uuid);
|
||||
}catch (Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
simpleFacet.setAdditionalProperty(CatalogueConfiguration.MODERATION_ENABLED_KEY, catalogueConfiguration.isModerationEnabled());
|
||||
simpleFacet.setAdditionalProperty(CatalogueConfiguration.NOTIFICATION_TO_USER_ENABLED_KEY, catalogueConfiguration.isNotificationToUsersEnabled());
|
||||
simpleFacet.setAdditionalProperty(CatalogueConfiguration.SOCIAL_POST_ENABLED_KEY, catalogueConfiguration.isSocialPostEnabled());
|
||||
|
||||
simpleFacet.setAdditionalProperty(CatalogueConfiguration.DEFAULT_ORGANIZATION_KEY, catalogueConfiguration.getDefaultOrganization());
|
||||
simpleFacet.setAdditionalProperty(CatalogueConfiguration.SUPPORTED_ORGANIZATIONS_KEY, catalogueConfiguration.getSupportedOrganizations());
|
||||
|
||||
Map<String,Object> additionalProperties = new HashMap<>(catalogueConfiguration.getAdditionalProperties());
|
||||
|
||||
for(String key : additionalProperties.keySet()) {
|
||||
if(!CatalogueConfiguration.KNOWN_PROPERTIES.contains(key)) {
|
||||
Object value = additionalProperties.get(key);
|
||||
simpleFacet.setAdditionalProperty(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
return simpleFacet;
|
||||
}
|
||||
|
||||
|
@ -295,13 +326,13 @@ public class FacetBasedISConfigurationProxy extends ISConfigurationProxy<SimpleF
|
|||
protected ServiceCatalogueConfiguration readFromIS() {
|
||||
try {
|
||||
catalogueConfiguration = new FacetBasedISServiceCatalogueConfiguration(context, this);
|
||||
virtualService = queryVirtualService();
|
||||
|
||||
configurationSimpleFacet = getISResource();
|
||||
|
||||
if(configurationSimpleFacet==null) {
|
||||
configurationSimpleFacet = instatiateSimpleFacetUsingDefaultValues(catalogueConfiguration);
|
||||
configurationSimpleFacet = getSimpleFacetFromConfiguration(catalogueConfiguration);
|
||||
}else {
|
||||
catalogueConfiguration = setGcatConfiguration(catalogueConfiguration);
|
||||
catalogueConfiguration = setConfigurationInfoFromSimpleFacet(configurationSimpleFacet, catalogueConfiguration);
|
||||
}
|
||||
|
||||
catalogueConfiguration = setCkanServiceInfo(catalogueConfiguration);
|
||||
|
@ -337,7 +368,7 @@ public class FacetBasedISConfigurationProxy extends ISConfigurationProxy<SimpleF
|
|||
ConsistsOf<Configuration, SimpleFacet> co = new ConsistsOfImpl<>(gcatConfiguration, configurationSimpleFacet);
|
||||
co = resourceRegistryPublisher.create(co);
|
||||
configurationSimpleFacet = co.getTarget();
|
||||
setGcatConfiguration(catalogueConfiguration);
|
||||
setConfigurationInfoFromSimpleFacet(configurationSimpleFacet, catalogueConfiguration);
|
||||
}
|
||||
return catalogueConfiguration;
|
||||
}
|
||||
|
@ -355,13 +386,15 @@ public class FacetBasedISConfigurationProxy extends ISConfigurationProxy<SimpleF
|
|||
}
|
||||
|
||||
@Override
|
||||
protected ServiceCatalogueConfiguration updateOnIS(SimpleFacet configurationSimpleFacet) throws Exception {
|
||||
UUID uuid = configurationSimpleFacet.getHeader().getUUID();
|
||||
if(uuid!=null) {
|
||||
this.configurationSimpleFacet = resourceRegistryPublisher.update(configurationSimpleFacet);
|
||||
setGcatConfiguration(catalogueConfiguration);
|
||||
protected ServiceCatalogueConfiguration updateOnIS() throws Exception {
|
||||
Header header = configurationSimpleFacet.getHeader();
|
||||
if(header!=null && header.getUUID()!=null) {
|
||||
configurationSimpleFacet = getSimpleFacetFromConfiguration(catalogueConfiguration);
|
||||
configurationSimpleFacet = resourceRegistryPublisher.update(configurationSimpleFacet);
|
||||
setConfigurationInfoFromSimpleFacet(configurationSimpleFacet, catalogueConfiguration);
|
||||
}
|
||||
return catalogueConfiguration;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -91,24 +91,13 @@ public class GCoreISConfigurationProxy extends ISConfigurationProxy<ServiceEndpo
|
|||
private final static String OLD_NAME = "CKanDataCatalogue";
|
||||
|
||||
protected ObjectMapper mapper;
|
||||
protected ServiceEndpoint serviceEndpoint;
|
||||
|
||||
public GCoreISConfigurationProxy(String context) {
|
||||
super(context);
|
||||
this.mapper = new ObjectMapper();
|
||||
}
|
||||
|
||||
public GCoreISConfigurationProxy(String context, ServiceCatalogueConfiguration catalogueConfiguration) {
|
||||
super(context, catalogueConfiguration);
|
||||
this.mapper = new ObjectMapper();
|
||||
}
|
||||
|
||||
public ServiceCatalogueConfiguration getCatalogueConfiguration() throws WebApplicationException {
|
||||
if (catalogueConfiguration == null) {
|
||||
catalogueConfiguration = readFromIS();
|
||||
}
|
||||
return catalogueConfiguration;
|
||||
}
|
||||
|
||||
protected AccessPoint getAccessPoint(Profile profile) {
|
||||
Group<AccessPoint> accessPoints = profile.accessPoints();
|
||||
Iterator<AccessPoint> accessPointIterator = accessPoints.iterator();
|
||||
|
@ -169,13 +158,15 @@ public class GCoreISConfigurationProxy extends ISConfigurationProxy<ServiceEndpo
|
|||
|
||||
@Override
|
||||
protected ServiceEndpoint getISResource() {
|
||||
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;
|
||||
if(serviceEndpoint==null) {
|
||||
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 = serviceEndpoints.get(0);
|
||||
}
|
||||
ServiceEndpoint serviceEndpoint = serviceEndpoints.get(0);
|
||||
return serviceEndpoint;
|
||||
}
|
||||
|
||||
|
@ -671,8 +662,9 @@ public class GCoreISConfigurationProxy extends ISConfigurationProxy<ServiceEndpo
|
|||
}
|
||||
|
||||
@Override
|
||||
protected ServiceCatalogueConfiguration updateOnIS(ServiceEndpoint serviceEndpoint) throws Exception {
|
||||
protected ServiceCatalogueConfiguration updateOnIS() throws Exception {
|
||||
RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
|
||||
ServiceEndpoint serviceEndpoint = getISResource();
|
||||
String id = serviceEndpoint.id();
|
||||
catalogueConfiguration.setID(id);
|
||||
serviceEndpoint = createServiceEndpoint(serviceEndpoint);
|
||||
|
|
|
@ -31,12 +31,16 @@ public abstract class ISConfigurationProxy<ISResource extends Object> {
|
|||
}
|
||||
return catalogueConfiguration;
|
||||
}
|
||||
|
||||
public void setCatalogueConfiguration(ServiceCatalogueConfiguration catalogueConfiguration) {
|
||||
this.catalogueConfiguration = catalogueConfiguration;
|
||||
}
|
||||
|
||||
public ServiceCatalogueConfiguration createOrUpdateOnIS() throws Exception {
|
||||
ISResource isResource = getISResource();
|
||||
if(isResource!=null) {
|
||||
// It's an update
|
||||
catalogueConfiguration = updateOnIS(isResource);
|
||||
catalogueConfiguration = updateOnIS();
|
||||
}else {
|
||||
// It's a create
|
||||
catalogueConfiguration = createOnIS();
|
||||
|
@ -51,7 +55,7 @@ public abstract class ISConfigurationProxy<ISResource extends Object> {
|
|||
Version version = new Version(applicationConfiguration.version());
|
||||
return version;
|
||||
}catch (Exception e) {
|
||||
return new Version("2.2.0");
|
||||
return new Version("2.4.2");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -61,7 +65,7 @@ public abstract class ISConfigurationProxy<ISResource extends Object> {
|
|||
|
||||
protected abstract ServiceCatalogueConfiguration readFromIS();
|
||||
|
||||
protected abstract ServiceCatalogueConfiguration updateOnIS(ISResource isResource) throws Exception;
|
||||
protected abstract ServiceCatalogueConfiguration updateOnIS() throws Exception;
|
||||
|
||||
public abstract void delete();
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package org.gcube.gcat.configuration.isproxies;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.common.authorization.utils.manager.SecretManagerProvider;
|
||||
|
||||
public class ISConfigurationProxyFactory {
|
||||
|
||||
private static final Map<String, FacetBasedISConfigurationProxy> isConfigurationProxies;
|
||||
|
||||
static {
|
||||
isConfigurationProxies = new HashMap<>();
|
||||
}
|
||||
|
||||
private static FacetBasedISConfigurationProxy find(String context) {
|
||||
FacetBasedISConfigurationProxy isConfigurationProxy = new FacetBasedISConfigurationProxy(context);
|
||||
return isConfigurationProxy;
|
||||
}
|
||||
|
||||
public synchronized static FacetBasedISConfigurationProxy getInstance(String context) {
|
||||
FacetBasedISConfigurationProxy isConfigurationProxy = isConfigurationProxies.get(context);
|
||||
if(isConfigurationProxy == null) {
|
||||
isConfigurationProxy = find(context);
|
||||
isConfigurationProxies.put(context, isConfigurationProxy);
|
||||
}
|
||||
return isConfigurationProxy;
|
||||
}
|
||||
|
||||
public static FacetBasedISConfigurationProxy getInstance() {
|
||||
String context = SecretManagerProvider.instance.get().getContext();
|
||||
return getInstance(context);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue