refs #2201: Remove the use of ScopeProvider if any from accounting-lib
https://support.d4science.org/issues/2201 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@124026 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
1a10ead141
commit
426355ce88
|
@ -5,11 +5,10 @@ package org.gcube.accounting.persistence;
|
||||||
|
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.BasicUsageRecord;
|
import org.gcube.accounting.datamodel.BasicUsageRecord;
|
||||||
import org.gcube.common.resources.gcore.Resource;
|
import org.gcube.accounting.testutility.TestUtility;
|
||||||
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
import org.gcube.common.resources.gcore.Resources;
|
import org.gcube.common.resources.gcore.Resources;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||||||
|
@ -19,10 +18,9 @@ import org.gcube.common.resources.gcore.ServiceEndpoint.Runtime;
|
||||||
import org.gcube.common.resources.gcore.common.Platform;
|
import org.gcube.common.resources.gcore.common.Platform;
|
||||||
import org.gcube.common.resources.gcore.utils.Group;
|
import org.gcube.common.resources.gcore.utils.Group;
|
||||||
import org.gcube.documentstore.persistence.PersistenceBackend;
|
import org.gcube.documentstore.persistence.PersistenceBackend;
|
||||||
import org.gcube.informationsystem.publisher.RegistryPublisherFactory;
|
import org.junit.After;
|
||||||
import org.gcube.informationsystem.publisher.ScopedPublisher;
|
|
||||||
import org.gcube.informationsystem.publisher.exception.RegistryNotFoundException;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -56,49 +54,16 @@ public class AccountingPersistenceConfigurationTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final String[] ALL_SCOPES = new String[]{
|
@Before
|
||||||
"/gcube",
|
public void before() throws Exception{
|
||||||
"/gcube/devsec",
|
SecurityTokenProvider.instance.set(TestUtility.TOKEN);
|
||||||
"/gcube/devsec/devVRE",
|
}
|
||||||
"/gcube/devNext",
|
|
||||||
"/gcube/devNext/NextNext"
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Publish the provided resource on all Service Scopes retrieved from
|
|
||||||
* Context
|
|
||||||
* @param resource to be published
|
|
||||||
* @throws RegistryNotFoundException if the Registry is not found so the
|
|
||||||
* resource has not be published
|
|
||||||
*/
|
|
||||||
private static void publishScopedResource(Resource resource, List<String> scopes) throws Exception {
|
|
||||||
StringWriter stringWriter = new StringWriter();
|
|
||||||
Resources.marshal(resource, stringWriter);
|
|
||||||
|
|
||||||
ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher();
|
@After
|
||||||
try {
|
public void after(){
|
||||||
logger.debug("Trying to publish to {}:\n{}", scopes, stringWriter);
|
SecurityTokenProvider.instance.reset();
|
||||||
scopedPublisher.create(resource, scopes);
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("The resource was not published", e);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the resource from IS
|
|
||||||
* @param resource to be unpublished
|
|
||||||
* @throws RegistryNotFoundException if the Registry is not found so the
|
|
||||||
* resource has not be published
|
|
||||||
*/
|
|
||||||
private static void unPublishScopedResource(Resource resource, List<String> scopes) throws RegistryNotFoundException, Exception {
|
|
||||||
ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher();
|
|
||||||
String id = resource.id();
|
|
||||||
logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, BasicUsageRecord.getScopeFromToken());
|
|
||||||
scopedPublisher.remove(resource, scopes);
|
|
||||||
logger.debug("{} with ID {} removed successfully", resource.getClass().getSimpleName(), id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the Service Endpoint using information related to discovered
|
* Create the Service Endpoint using information related to discovered
|
||||||
* available plugins and their own discovered capabilities
|
* available plugins and their own discovered capabilities
|
||||||
|
@ -155,11 +120,10 @@ public class AccountingPersistenceConfigurationTest {
|
||||||
public void testPersistenceConfigurationFromIS() throws Exception{
|
public void testPersistenceConfigurationFromIS() throws Exception{
|
||||||
boolean createResource = true;
|
boolean createResource = true;
|
||||||
ServiceEndpoint serviceEndpoint = null;
|
ServiceEndpoint serviceEndpoint = null;
|
||||||
List<String> scopes = Arrays.asList(ALL_SCOPES);
|
|
||||||
|
|
||||||
if(createResource){
|
if(createResource){
|
||||||
serviceEndpoint = createServiceEndpoint();
|
serviceEndpoint = createServiceEndpoint();
|
||||||
publishScopedResource(serviceEndpoint, scopes);
|
TestUtility.publishResource(serviceEndpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
Thread.sleep(5000); // Waiting 5 sec
|
Thread.sleep(5000); // Waiting 5 sec
|
||||||
|
@ -179,7 +143,7 @@ public class AccountingPersistenceConfigurationTest {
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if(createResource){
|
if(createResource){
|
||||||
unPublishScopedResource(serviceEndpoint, scopes);
|
TestUtility.unPublishResource(serviceEndpoint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,19 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.accounting.testutility;
|
package org.gcube.accounting.testutility;
|
||||||
|
|
||||||
|
import java.io.StringWriter;
|
||||||
|
|
||||||
|
import org.gcube.common.authorization.client.Constants;
|
||||||
|
import org.gcube.common.authorization.library.AuthorizationEntry;
|
||||||
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
|
import org.gcube.common.resources.gcore.Resource;
|
||||||
|
import org.gcube.common.resources.gcore.Resources;
|
||||||
|
import org.gcube.informationsystem.publisher.RegistryPublisher;
|
||||||
|
import org.gcube.informationsystem.publisher.RegistryPublisherFactory;
|
||||||
|
import org.gcube.informationsystem.publisher.exception.RegistryNotFoundException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
*
|
*
|
||||||
|
@ -11,4 +24,62 @@ public class TestUtility {
|
||||||
|
|
||||||
public static final String TOKEN = "";
|
public static final String TOKEN = "";
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* Logger
|
||||||
|
*/
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(TestUtility.class);
|
||||||
|
|
||||||
|
public static String getScopeFromToken(){
|
||||||
|
String token = SecurityTokenProvider.instance.get();
|
||||||
|
AuthorizationEntry authorizationEntry;
|
||||||
|
try {
|
||||||
|
authorizationEntry = Constants.authorizationService().get(token);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
String scope = authorizationEntry.getContext();
|
||||||
|
return scope;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Publish the provided resource on current scope
|
||||||
|
* @param resource to be published
|
||||||
|
* @throws RegistryNotFoundException if the Registry is not found so the
|
||||||
|
* resource has not be published
|
||||||
|
*/
|
||||||
|
public static void publishResource(Resource resource) throws Exception {
|
||||||
|
StringWriter stringWriter = new StringWriter();
|
||||||
|
Resources.marshal(resource, stringWriter);
|
||||||
|
|
||||||
|
RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
|
||||||
|
|
||||||
|
try {
|
||||||
|
logger.debug("Trying to publish to {}:\n{}", getScopeFromToken(), stringWriter);
|
||||||
|
registryPublisher.create(resource);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("The resource was not published", e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the resource from IS from curretn scope
|
||||||
|
* @param resource to be unpublished
|
||||||
|
* @throws RegistryNotFoundException if the Registry is not found so the
|
||||||
|
* resource has not be published
|
||||||
|
*/
|
||||||
|
public static void unPublishResource(Resource resource) throws Exception {
|
||||||
|
//StringWriter stringWriter = new StringWriter();
|
||||||
|
//Resources.marshal(resource, stringWriter);
|
||||||
|
|
||||||
|
RegistryPublisher registryPublisher = RegistryPublisherFactory.create();
|
||||||
|
|
||||||
|
String id = resource.id();
|
||||||
|
logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, getScopeFromToken());
|
||||||
|
|
||||||
|
registryPublisher.remove(resource);
|
||||||
|
|
||||||
|
logger.debug("{} with ID {} removed successfully", resource.getClass().getSimpleName(), id);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue