From 1a78e77e5b47e2194adfa90f9e133a343ebb1a54 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Thu, 29 Jun 2017 16:00:00 +0000 Subject: [PATCH] Refactoring accounting service refs #9332 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-service@150627 82a268e6-3cf1-43bd-a215-b396298e98cf --- .project | 2 +- distro/web.xml | 2 +- .../service/AccountingInitializer.java | 95 ------ .../service/AccountingResource.java | 11 +- .../service/AccountingServiceInitializer.java | 108 ++++++ .../AccountingServiceExceptionMapper.java | 23 ++ .../service/resources/ResourceInsert.java | 91 ++--- .../service/resources/ResourceQuery.java | 55 ++- .../service/resources/ResourceStatus.java | 40 --- .../service/resources/ServiceState.java | 68 ++++ src/main/webapp/WEB-INF/LICENSE | 316 ------------------ src/main/webapp/WEB-INF/README | 80 ----- src/main/webapp/WEB-INF/changelog.xml | 7 - src/main/webapp/WEB-INF/descriptor.xml | 32 -- src/main/webapp/WEB-INF/gcube-app.xml | 11 - src/main/webapp/WEB-INF/profile.xml | 27 -- src/main/webapp/WEB-INF/web.xml | 21 -- 17 files changed, 258 insertions(+), 731 deletions(-) delete mode 100644 src/main/java/org/gcube/data/publishing/accounting/service/AccountingInitializer.java create mode 100644 src/main/java/org/gcube/data/publishing/accounting/service/AccountingServiceInitializer.java create mode 100644 src/main/java/org/gcube/data/publishing/accounting/service/resources/AccountingServiceExceptionMapper.java delete mode 100644 src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceStatus.java create mode 100644 src/main/java/org/gcube/data/publishing/accounting/service/resources/ServiceState.java delete mode 100644 src/main/webapp/WEB-INF/LICENSE delete mode 100644 src/main/webapp/WEB-INF/README delete mode 100644 src/main/webapp/WEB-INF/changelog.xml delete mode 100644 src/main/webapp/WEB-INF/descriptor.xml delete mode 100644 src/main/webapp/WEB-INF/gcube-app.xml delete mode 100644 src/main/webapp/WEB-INF/profile.xml delete mode 100644 src/main/webapp/WEB-INF/web.xml diff --git a/.project b/.project index 237c8a5..07149ae 100644 --- a/.project +++ b/.project @@ -1,6 +1,6 @@ - accunting-service + accounting-service diff --git a/distro/web.xml b/distro/web.xml index a8a4e6b..e0c45b1 100644 --- a/distro/web.xml +++ b/distro/web.xml @@ -15,7 +15,7 @@ org.gcube.data.publishing.accounting.service.AccountingResource - /gcube/service/* + /* diff --git a/src/main/java/org/gcube/data/publishing/accounting/service/AccountingInitializer.java b/src/main/java/org/gcube/data/publishing/accounting/service/AccountingInitializer.java deleted file mode 100644 index fa852b5..0000000 --- a/src/main/java/org/gcube/data/publishing/accounting/service/AccountingInitializer.java +++ /dev/null @@ -1,95 +0,0 @@ -package org.gcube.data.publishing.accounting.service; - - -import java.util.concurrent.TimeUnit; - -import org.gcube.accounting.analytics.persistence.AccountingPersistenceBackendQueryConfiguration; -import org.gcube.accounting.analytics.persistence.couchbase.AccountingPersistenceQueryCouchBase; -import org.gcube.accounting.persistence.AccountingPersistence; -import org.gcube.accounting.persistence.AccountingPersistenceFactory; -import org.gcube.smartgears.ApplicationManager; -import org.gcube.smartgears.ContextProvider; -import org.gcube.smartgears.context.application.ApplicationContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class AccountingInitializer implements ApplicationManager{ - - private static Logger logger = LoggerFactory.getLogger(AccountingInitializer.class); - - ApplicationContext ctx = ContextProvider.get(); - - //for insert - private AccountingPersistence accountingPersistence=null; - - //for query - protected AccountingPersistenceQueryCouchBase accountingPersistenceAnalytics; - - - - @Override - public void onInit() { - logger.info("AccountingInitializer on init"); - //init for service insert - accountingPersistence = AccountingPersistenceFactory.getPersistence(); - try { - accountingPersistence.flush(1, TimeUnit.SECONDS); - } catch (Exception e) { - logger.error("AccountingInitializer onInit error:",e); - // TODO Auto-generated catch block - e.printStackTrace(); - } - //init for service query - AccountingPersistenceBackendQueryConfiguration configuration; - try { - configuration = new - AccountingPersistenceBackendQueryConfiguration(AccountingPersistenceQueryCouchBase.class); - accountingPersistenceAnalytics = new AccountingPersistenceQueryCouchBase(); - accountingPersistenceAnalytics.prepareConnection(configuration); - } catch (Exception e1) { - e1.printStackTrace(); - } - - - - - - - } - - public void onShutdown() { - //stop timer thread discovering - logger.info("AccountingInitializer onShutdown"); - try { - //close a persistence for insert - accountingPersistence.flush(1, TimeUnit.SECONDS); - accountingPersistence .close(); - - //close a persistence for query - accountingPersistenceAnalytics.close(); - - } catch (Exception e) { - logger.error("AccountingInitializer shutdown error:",e); - e.printStackTrace(); - } - } - - - /** - * - * @return persistence for document store lib - */ - public AccountingPersistence getAccountingPersistence() { - return accountingPersistence; - } - - /** - * - * @return persistence for accounting analytics - */ - public AccountingPersistenceQueryCouchBase getAccountingPersistenceQuery() { - return accountingPersistenceAnalytics; - } - - -} diff --git a/src/main/java/org/gcube/data/publishing/accounting/service/AccountingResource.java b/src/main/java/org/gcube/data/publishing/accounting/service/AccountingResource.java index 4c06764..b2bbccd 100644 --- a/src/main/java/org/gcube/data/publishing/accounting/service/AccountingResource.java +++ b/src/main/java/org/gcube/data/publishing/accounting/service/AccountingResource.java @@ -1,16 +1,21 @@ package org.gcube.data.publishing.accounting.service; import javax.ws.rs.ApplicationPath; +import javax.ws.rs.core.MediaType; +import org.gcube.data.publishing.accounting.service.resources.ResourceInsert; import org.glassfish.jersey.server.ResourceConfig; /** * @author Alessandro Pieve (alessandro.pieve@isti.cnr.it) - * + * @author Luca Frosini (ISTI - CNR) */ -@ApplicationPath("/gcube/service/") +@ApplicationPath("/") public class AccountingResource extends ResourceConfig{ + + public static final String APPLICATION_JSON_CHARSET_UTF_8 = MediaType.APPLICATION_JSON + ";charset=UTF-8"; + public AccountingResource(){ - packages("org.gcube.data.publishing.accounting.service.resources"); + packages(ResourceInsert.class.getPackage().toString()); } } diff --git a/src/main/java/org/gcube/data/publishing/accounting/service/AccountingServiceInitializer.java b/src/main/java/org/gcube/data/publishing/accounting/service/AccountingServiceInitializer.java new file mode 100644 index 0000000..55f4f52 --- /dev/null +++ b/src/main/java/org/gcube/data/publishing/accounting/service/AccountingServiceInitializer.java @@ -0,0 +1,108 @@ +package org.gcube.data.publishing.accounting.service; + +import java.util.concurrent.TimeUnit; + +import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery; +import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory; +import org.gcube.accounting.persistence.AccountingPersistence; +import org.gcube.accounting.persistence.AccountingPersistenceFactory; +import org.gcube.common.authorization.client.Constants; +import org.gcube.common.authorization.client.exceptions.ObjectNotFound; +import org.gcube.common.authorization.library.AuthorizationEntry; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.smartgears.ApplicationManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AccountingServiceInitializer implements ApplicationManager { + + private static Logger logger = LoggerFactory.getLogger(AccountingServiceInitializer.class); + + // Used for Record insert + protected AccountingPersistence accountingPersistence = null; + // Used for Query + protected AccountingPersistenceQuery accountingPersistenceQuery; + + public static String getCurrentContext(){ + String token = SecurityTokenProvider.instance.get(); + AuthorizationEntry authorizationEntry; + try { + authorizationEntry = Constants.authorizationService().get(token); + } catch (Exception e) { + return ScopeProvider.instance.get(); + } + return authorizationEntry.getContext(); + } + + public static String getCurrentContext(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; + } + + @Override + public void onInit() { + String context = getCurrentContext(); + + logger.debug( + "\n-------------------------------------------------------\n" + + "Accounting Service is Starting on context {}\n" + + "-------------------------------------------------------", + context); + // Initializing the persistence connector used for insert + accountingPersistence = AccountingPersistenceFactory.getPersistence(); + accountingPersistenceQuery = AccountingPersistenceQueryFactory.getInstance(); + + + + } + + public void onShutdown() { + + String context = getCurrentContext(); + logger.trace( + "\n-------------------------------------------------------\n" + + "Accounting Service is Stopping on context {}\n" + + "-------------------------------------------------------", + context); + + try { + // Closing the persistence connector used for insert + accountingPersistence.flush(1, TimeUnit.SECONDS); + accountingPersistence.close(); + + // Closing the persistence connector used for query + accountingPersistenceQuery.close(); + + + logger.trace( + "\n-------------------------------------------------------\n" + + "Accounting Service Stopped Successfully on context {}\n" + + "-------------------------------------------------------", + context); + + } catch (Exception e) { + logger.error("Error while stopping Accounting Service on context {}", context, e); + } + + } + + /** + * + * @return persistence for document store lib + */ + public AccountingPersistence getAccountingPersistence() { + return accountingPersistence; + } + + /** + * + * @return persistence for accounting analytics + */ + public AccountingPersistenceQuery getAccountingPersistenceQuery() { + return accountingPersistenceQuery; + } + +} diff --git a/src/main/java/org/gcube/data/publishing/accounting/service/resources/AccountingServiceExceptionMapper.java b/src/main/java/org/gcube/data/publishing/accounting/service/resources/AccountingServiceExceptionMapper.java new file mode 100644 index 0000000..e82328a --- /dev/null +++ b/src/main/java/org/gcube/data/publishing/accounting/service/resources/AccountingServiceExceptionMapper.java @@ -0,0 +1,23 @@ +package org.gcube.data.publishing.accounting.service.resources; + +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +@Provider +public class AccountingServiceExceptionMapper implements ExceptionMapper{ + + @Override + public Response toResponse(Exception exception) { + Status status = Status.INTERNAL_SERVER_ERROR; + String entity = exception.getMessage(); + MediaType mediaType = MediaType.TEXT_PLAIN_TYPE; + return Response.status(status).entity(entity).type(mediaType).build(); + } + +} diff --git a/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceInsert.java b/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceInsert.java index 42af52a..1293a9f 100644 --- a/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceInsert.java +++ b/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceInsert.java @@ -1,94 +1,49 @@ package org.gcube.data.publishing.accounting.service.resources; - import java.util.List; -import java.util.concurrent.TimeUnit; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; -import javax.ws.rs.PathParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; -import org.gcube.accounting.datamodel.BasicUsageRecord; import org.gcube.accounting.persistence.AccountingPersistence; -import org.gcube.data.publishing.accounting.service.AccountingInitializer; +import org.gcube.data.publishing.accounting.service.AccountingResource; +import org.gcube.data.publishing.accounting.service.AccountingServiceInitializer; import org.gcube.documentstore.records.DSMapper; import org.gcube.documentstore.records.Record; -import org.gcube.documentstore.records.SerializableList; import org.gcube.smartgears.ApplicationManagerProvider; import org.gcube.smartgears.annotations.ManagedBy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@ManagedBy(AccountingInitializer.class) -@Path("insert") +@ManagedBy(AccountingServiceInitializer.class) +@Path(ResourceInsert.INSERT_PATH_PART) public class ResourceInsert { private static final Logger log = LoggerFactory.getLogger(ResourceInsert.class); - private AccountingPersistence accountingPersistence; - private AccountingInitializer appManager = (AccountingInitializer)ApplicationManagerProvider.get(AccountingInitializer.class); - + public static final String INSERT_PATH_PART = "insert"; + public static final String RECORD_PATH_PART = "record"; @POST - @Path("/record/") - @Consumes(MediaType.APPLICATION_JSON) - public Response consumeLine( String line ) throws Exception { - try{ - - log.debug("call consumeRecord:{}",line); - //String scope = BasicUsageRecord.getScopeFromToken(); - //log.debug("call with scope:{}",scope); - accountingPersistence=appManager.getAccountingPersistence(); - log.debug("get persistence"); - - Record r= DSMapper.unmarshal(Record.class, line); - //Record r = RecordUtility.getRecord( line); - log.debug("transform into record:{}",r); - - accountingPersistence.account(r); - accountingPersistence.flush(100, TimeUnit.MILLISECONDS); - String output = "RESPONSE:"+r.toString(); - return Response.status(200).entity(output).build(); - - } - catch(Exception e){ - log.error("Error",e); - return Response.status(500).entity("").build(); - } - } - - - @POST - @Consumes(MediaType.APPLICATION_XML) - @Path("records") - public Response consumeRecords(@PathParam("records") String id, SerializableList input) throws Exception { - try{ - log.trace("call consumeRecords:{}"); - List valueList=input.getValuesList(); - accountingPersistence=appManager.getAccountingPersistence(); - for(String value : valueList){ - Record r= DSMapper.unmarshal(Record.class, value); - accountingPersistence.account(r); - - } - //accountingPersistence.flush(1000, TimeUnit.MILLISECONDS); - String output = "Ok"; - return Response.status(200).entity(output).build(); - } - catch(Exception e){ - log.error("Error",e); - return Response.status(500).entity("").build(); - } - - - - } - - + @Path(RECORD_PATH_PART) + @Consumes({ MediaType.TEXT_PLAIN, AccountingResource.APPLICATION_JSON_CHARSET_UTF_8 }) + public Response add(String json) throws Exception { + + log.debug("Goign to account : {}", json); + + AccountingServiceInitializer appManager = (AccountingServiceInitializer) ApplicationManagerProvider + .get(AccountingServiceInitializer.class); + AccountingPersistence accountingPersistence = appManager.getAccountingPersistence(); + + List records = DSMapper.unmarshalList(json); + for (Record record : records) { + accountingPersistence.account(record); + } + return Response.status(Status.CREATED).build(); + } - - } diff --git a/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceQuery.java b/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceQuery.java index 3a99b5c..455285c 100644 --- a/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceQuery.java +++ b/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceQuery.java @@ -1,50 +1,47 @@ package org.gcube.data.publishing.accounting.service.resources; - import javax.validation.constraints.NotNull; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.Response; -import org.gcube.accounting.analytics.persistence.couchbase.AccountingPersistenceQueryCouchBase; -import org.gcube.data.publishing.accounting.service.AccountingInitializer; +import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery; +import org.gcube.data.publishing.accounting.service.AccountingResource; +import org.gcube.data.publishing.accounting.service.AccountingServiceInitializer; import org.gcube.smartgears.ApplicationManagerProvider; import org.gcube.smartgears.annotations.ManagedBy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@ManagedBy(AccountingInitializer.class) -@Path("query") +@ManagedBy(AccountingServiceInitializer.class) +@Path(ResourceQuery.QUERY_PATH_PART) public class ResourceQuery { private static final Logger log = LoggerFactory.getLogger(ResourceQuery.class); - private AccountingPersistenceQueryCouchBase accountingPersistenceQuery; - private AccountingInitializer appManager = (AccountingInitializer)ApplicationManagerProvider.get(AccountingInitializer.class); + public static final String QUERY_PATH_PART = "query"; + public static final String RECORD_PATH_PART = "record"; + + public static final String TYPE_PATH_PART = "type"; + public static final String RECORD_ID_PATH_PART = "recordID"; + + @GET + @Path(RECORD_PATH_PART + "/{" + TYPE_PATH_PART + "}/{" + RECORD_ID_PATH_PART + "}/") + @Produces(AccountingResource.APPLICATION_JSON_CHARSET_UTF_8) + public Response get(@NotNull @PathParam(TYPE_PATH_PART) String type, + @NotNull @PathParam(RECORD_ID_PATH_PART) String recordId) throws Exception { + + log.debug("Requested {} having ID {}", type, recordId); + + AccountingServiceInitializer appManager = (AccountingServiceInitializer) ApplicationManagerProvider + .get(AccountingServiceInitializer.class); + AccountingPersistenceQuery accountingPersistenceQuery = appManager.getAccountingPersistenceQuery(); + + String record = accountingPersistenceQuery.getRecord(recordId, type); + return Response.status(200).entity(record).type(AccountingResource.APPLICATION_JSON_CHARSET_UTF_8).build(); - - @GET - @Path("/getRecord/{recordId}/{type}/") - public Response responseRecord(@NotNull @PathParam("recordId") String recordId,@NotNull @PathParam("type") String type) throws Exception { - log.debug("call responseRecord with recordID:{}, type:{}",recordId,type); - Response response = null; - String result=null; - try{ - accountingPersistenceQuery=appManager.getAccountingPersistenceQuery(); - result= accountingPersistenceQuery.getRecord(recordId,type); - return Response.status(200).entity(result).build(); - } - catch(Exception e){ - log.error("Error",e); - return Response.status(500).entity("").build(); - } - } - - - - - } diff --git a/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceStatus.java b/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceStatus.java deleted file mode 100644 index 007daf3..0000000 --- a/src/main/java/org/gcube/data/publishing/accounting/service/resources/ResourceStatus.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.gcube.data.publishing.accounting.service.resources; - - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.core.Response; - -import org.gcube.accounting.persistence.AccountingPersistence; -import org.gcube.data.publishing.accounting.service.AccountingInitializer; -import org.gcube.smartgears.ApplicationManagerProvider; -import org.gcube.smartgears.annotations.ManagedBy; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@ManagedBy(AccountingInitializer.class) -@Path("status") -public class ResourceStatus { - - private static final Logger log = LoggerFactory.getLogger(ResourceStatus.class); - - private AccountingPersistence accountingPersistence; - private AccountingInitializer appManager = (AccountingInitializer)ApplicationManagerProvider.get(AccountingInitializer.class); - - - @GET - @Path("/getStatus") - public Response getStatus() { - log.debug("call getStatus"); - String output = "Accounting Service is UP"; - return Response.status(200).entity(output).build(); - } - - - - - - - - -} diff --git a/src/main/java/org/gcube/data/publishing/accounting/service/resources/ServiceState.java b/src/main/java/org/gcube/data/publishing/accounting/service/resources/ServiceState.java new file mode 100644 index 0000000..222c855 --- /dev/null +++ b/src/main/java/org/gcube/data/publishing/accounting/service/resources/ServiceState.java @@ -0,0 +1,68 @@ +package org.gcube.data.publishing.accounting.service.resources; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; + +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; +import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery; +import org.gcube.accounting.persistence.AccountingPersistence; +import org.gcube.data.publishing.accounting.service.AccountingResource; +import org.gcube.data.publishing.accounting.service.AccountingServiceInitializer; +import org.gcube.smartgears.ApplicationManagerProvider; +import org.gcube.smartgears.annotations.ManagedBy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@ManagedBy(AccountingServiceInitializer.class) +@Path(ServiceState.STATE_PATH_PART) +public class ServiceState { + + private static final Logger logger = LoggerFactory.getLogger(ServiceState.class); + + public static final String STATE_PATH_PART = "state"; + + public static final String SERVICE = "service"; + public static final String RUNNING = "running"; + public static final String CONTEXT = "context"; + public static final String QUERY_CONNECTION_UP = "queryConnection"; + public static final String INSERT_CONNECTION_UP = "insertConnection"; + + @GET + @Path("/") + @Produces(AccountingResource.APPLICATION_JSON_CHARSET_UTF_8) + public Response getState() throws JSONException { + String context = AccountingServiceInitializer.getCurrentContext(); + logger.debug("Getting Service Status fro context {}", context); + + JSONObject jsonObject = new JSONObject(); + jsonObject.append(SERVICE, RUNNING); + jsonObject.append(CONTEXT, context); + + Status responseStatus = Status.SERVICE_UNAVAILABLE; + + AccountingServiceInitializer appManager = (AccountingServiceInitializer) ApplicationManagerProvider + .get(AccountingServiceInitializer.class); + + AccountingPersistence accountingPersistence = appManager.getAccountingPersistence(); + try { + jsonObject.append(INSERT_CONNECTION_UP, accountingPersistence.isConnectionActive()); + }catch (Exception e) { + jsonObject.append(INSERT_CONNECTION_UP, false); + } + + AccountingPersistenceQuery accountingPersistenceQuery = appManager.getAccountingPersistenceQuery(); + try { + jsonObject.append(QUERY_CONNECTION_UP, accountingPersistenceQuery.isConnectionActive()); + }catch (Exception e) { + jsonObject.append(QUERY_CONNECTION_UP, false); + } + + return Response.status(responseStatus).entity(jsonObject.toString()).build(); + + } + +} diff --git a/src/main/webapp/WEB-INF/LICENSE b/src/main/webapp/WEB-INF/LICENSE deleted file mode 100644 index 9724bfe..0000000 --- a/src/main/webapp/WEB-INF/LICENSE +++ /dev/null @@ -1,316 +0,0 @@ -gCube System - License ------------------------------------------------------------- - -European Union Public Licence V. 1.1 - - -EUPL © the European Community 2007 - - -This European Union Public Licence (the “EUPL”) applies to the Work or Software -(as defined below) which is provided under the terms of this Licence. Any use of -the Work, other than as authorised under this Licence is prohibited (to the -extent such use is covered by a right of the copyright holder of the Work). - -The Original Work is provided under the terms of this Licence when the Licensor -(as defined below) has placed the following notice immediately following the -copyright notice for the Original Work: - -Licensed under the EUPL V.1.1 - -or has expressed by any other mean his willingness to license under the EUPL. - - - -1. Definitions - -In this Licence, the following terms have the following meaning: - -- The Licence: this Licence. - -- The Original Work or the Software: the software distributed and/or - communicated by the Licensor under this Licence, available as Source Code and - also as Executable Code as the case may be. - -- Derivative Works: the works or software that could be created by the Licensee, - based upon the Original Work or modifications thereof. This Licence does not - define the extent of modification or dependence on the Original Work required - in order to classify a work as a Derivative Work; this extent is determined by - copyright law applicable in the country mentioned in Article 15. - -- The Work: the Original Work and/or its Derivative Works. - -- The Source Code: the human-readable form of the Work which is the most - convenient for people to study and modify. - -- The Executable Code: any code which has generally been compiled and which is - meant to be interpreted by a computer as a program. - -- The Licensor: the natural or legal person that distributes and/or communicates - the Work under the Licence. - -- Contributor(s): any natural or legal person who modifies the Work under the - Licence, or otherwise contributes to the creation of a Derivative Work. - -- The Licensee or “You”: any natural or legal person who makes any usage of the - Software under the terms of the Licence. - -- Distribution and/or Communication: any act of selling, giving, lending, - renting, distributing, communicating, transmitting, or otherwise making - available, on-line or off-line, copies of the Work or providing access to its - essential functionalities at the disposal of any other natural or legal - person. - - - -2. Scope of the rights granted by the Licence - -The Licensor hereby grants You a world-wide, royalty-free, non-exclusive, -sub-licensable licence to do the following, for the duration of copyright vested -in the Original Work: - -- use the Work in any circumstance and for all usage, reproduce the Work, modify -- the Original Work, and make Derivative Works based upon the Work, communicate -- to the public, including the right to make available or display the Work or -- copies thereof to the public and perform publicly, as the case may be, the -- Work, distribute the Work or copies thereof, lend and rent the Work or copies -- thereof, sub-license rights in the Work or copies thereof. - -Those rights can be exercised on any media, supports and formats, whether now -known or later invented, as far as the applicable law permits so. - -In the countries where moral rights apply, the Licensor waives his right to -exercise his moral right to the extent allowed by law in order to make effective -the licence of the economic rights here above listed. - -The Licensor grants to the Licensee royalty-free, non exclusive usage rights to -any patents held by the Licensor, to the extent necessary to make use of the -rights granted on the Work under this Licence. - - - -3. Communication of the Source Code - -The Licensor may provide the Work either in its Source Code form, or as -Executable Code. If the Work is provided as Executable Code, the Licensor -provides in addition a machine-readable copy of the Source Code of the Work -along with each copy of the Work that the Licensor distributes or indicates, in -a notice following the copyright notice attached to the Work, a repository where -the Source Code is easily and freely accessible for as long as the Licensor -continues to distribute and/or communicate the Work. - - - -4. Limitations on copyright - -Nothing in this Licence is intended to deprive the Licensee of the benefits from -any exception or limitation to the exclusive rights of the rights owners in the -Original Work or Software, of the exhaustion of those rights or of other -applicable limitations thereto. - - - -5. Obligations of the Licensee - -The grant of the rights mentioned above is subject to some restrictions and -obligations imposed on the Licensee. Those obligations are the following: - -Attribution right: the Licensee shall keep intact all copyright, patent or -trademarks notices and all notices that refer to the Licence and to the -disclaimer of warranties. The Licensee must include a copy of such notices and a -copy of the Licence with every copy of the Work he/she distributes and/or -communicates. The Licensee must cause any Derivative Work to carry prominent -notices stating that the Work has been modified and the date of modification. - -Copyleft clause: If the Licensee distributes and/or communicates copies of the -Original Works or Derivative Works based upon the Original Work, this -Distribution and/or Communication will be done under the terms of this Licence -or of a later version of this Licence unless the Original Work is expressly -distributed only under this version of the Licence. The Licensee (becoming -Licensor) cannot offer or impose any additional terms or conditions on the Work -or Derivative Work that alter or restrict the terms of the Licence. - -Compatibility clause: If the Licensee Distributes and/or Communicates Derivative -Works or copies thereof based upon both the Original Work and another work -licensed under a Compatible Licence, this Distribution and/or Communication can -be done under the terms of this Compatible Licence. For the sake of this clause, -“Compatible Licence” refers to the licences listed in the appendix attached to -this Licence. Should the Licensee’s obligations under the Compatible Licence -conflict with his/her obligations under this Licence, the obligations of the -Compatible Licence shall prevail. - -Provision of Source Code: When distributing and/or communicating copies of the -Work, the Licensee will provide a machine-readable copy of the Source Code or -indicate a repository where this Source will be easily and freely available for -as long as the Licensee continues to distribute and/or communicate the Work. - -Legal Protection: This Licence does not grant permission to use the trade names, -trademarks, service marks, or names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the copyright notice. - - - -6. Chain of Authorship - -The original Licensor warrants that the copyright in the Original Work granted -hereunder is owned by him/her or licensed to him/her and that he/she has the -power and authority to grant the Licence. - -Each Contributor warrants that the copyright in the modifications he/she brings -to the Work are owned by him/her or licensed to him/her and that he/she has the -power and authority to grant the Licence. - -Each time You accept the Licence, the original Licensor and subsequent -Contributors grant You a licence to their contributions to the Work, under the -terms of this Licence. - - - -7. Disclaimer of Warranty - -The Work is a work in progress, which is continuously improved by numerous -contributors. It is not a finished work and may therefore contain defects or -“bugs” inherent to this type of software development. - -For the above reason, the Work is provided under the Licence on an “as is” basis -and without warranties of any kind concerning the Work, including without -limitation merchantability, fitness for a particular purpose, absence of defects -or errors, accuracy, non-infringement of intellectual property rights other than -copyright as stated in Article 6 of this Licence. - -This disclaimer of warranty is an essential part of the Licence and a condition -for the grant of any rights to the Work. - - - -8. Disclaimer of Liability - -Except in the cases of wilful misconduct or damages directly caused to natural -persons, the Licensor will in no event be liable for any direct or indirect, -material or moral, damages of any kind, arising out of the Licence or of the use -of the Work, including without limitation, damages for loss of goodwill, work -stoppage, computer failure or malfunction, loss of data or any commercial -damage, even if the Licensor has been advised of the possibility of such -damage. However, the Licensor will be liable under statutory product liability -laws as far such laws apply to the Work. - - - -9. Additional agreements - -While distributing the Original Work or Derivative Works, You may choose to -conclude an additional agreement to offer, and charge a fee for, acceptance of -support, warranty, indemnity, or other liability obligations and/or services -consistent with this Licence. However, in accepting such obligations, You may -act only on your own behalf and on your sole responsibility, not on behalf of -the original Licensor or any other Contributor, and only if You agree to -indemnify, defend, and hold each Contributor harmless for any liability incurred -by, or claims asserted against such Contributor by the fact You have accepted -any such warranty or additional liability. - - - -10. Acceptance of the Licence - -The provisions of this Licence can be accepted by clicking on an icon “I agree” -placed under the bottom of a window displaying the text of this Licence or by -affirming consent in any other similar way, in accordance with the rules of -applicable law. Clicking on that icon indicates your clear and irrevocable -acceptance of this Licence and all of its terms and conditions. - -Similarly, you irrevocably accept this Licence and all of its terms and -conditions by exercising any rights granted to You by Article 2 of this Licence, -such as the use of the Work, the creation by You of a Derivative Work or the -Distribution and/or Communication by You of the Work or copies thereof. - - - -11. Information to the public - -In case of any Distribution and/or Communication of the Work by means of -electronic communication by You (for example, by offering to download the Work -from a remote location) the distribution channel or media (for example, a -website) must at least provide to the public the information requested by the -applicable law regarding the Licensor, the Licence and the way it may be -accessible, concluded, stored and reproduced by the Licensee. - - - -12. Termination of the Licence - -The Licence and the rights granted hereunder will terminate automatically upon -any breach by the Licensee of the terms of the Licence. - -Such a termination will not terminate the licences of any person who has -received the Work from the Licensee under the Licence, provided such persons -remain in full compliance with the Licence. - - - -13. Miscellaneous - -Without prejudice of Article 9 above, the Licence represents the complete -agreement between the Parties as to the Work licensed hereunder. - -If any provision of the Licence is invalid or unenforceable under applicable -law, this will not affect the validity or enforceability of the Licence as a -whole. Such provision will be construed and/or reformed so as necessary to make -it valid and enforceable. - -The European Commission may publish other linguistic versions and/or new -versions of this Licence, so far this is required and reasonable, without -reducing the scope of the rights granted by the Licence. New versions of the -Licence will be published with a unique version number. - -All linguistic versions of this Licence, approved by the European Commission, -have identical value. Parties can take advantage of the linguistic version of -their choice. - - - -14. Jurisdiction - -Any litigation resulting from the interpretation of this License, arising -between the European Commission, as a Licensor, and any Licensee, will be -subject to the jurisdiction of the Court of Justice of the European Communities, -as laid down in article 238 of the Treaty establishing the European Community. - -Any litigation arising between Parties, other than the European Commission, and -resulting from the interpretation of this License, will be subject to the -exclusive jurisdiction of the competent court where the Licensor resides or -conducts its primary business. - - - -15. Applicable Law - -This Licence shall be governed by the law of the European Union country where -the Licensor resides or has his registered office. - -This licence shall be governed by the Belgian law if: - -- a litigation arises between the European Commission, as a Licensor, and any -- Licensee; the Licensor, other than the European Commission, has no residence -- or registered office inside a European Union country. - - -=== - - -Appendix - - - -“Compatible Licences” according to article 5 EUPL are: - - -- GNU General Public License (GNU GPL) v. 2 - -- Open Software License (OSL) v. 2.1, v. 3.0 - -- Common Public License v. 1.0 - -- Eclipse Public License v. 1.0 - -- Cecill v. 2.0 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/README b/src/main/webapp/WEB-INF/README deleted file mode 100644 index 19d4f48..0000000 --- a/src/main/webapp/WEB-INF/README +++ /dev/null @@ -1,80 +0,0 @@ -The gCube System - accounting-service --------------------------------------------------- - -Service Accounting Manger - - -This software is part of the gCube Framework (https://www.gcube-system.org/): an -open-source software toolkit used for building and operating Hybrid Data -Infrastructures enabling the dynamic deployment of Virtual Research Environments -by favouring the realisation of reuse oriented policies. - -The projects leading to this software have received funding from a series of -European Union programmes including: -* the Sixth Framework Programme for Research and Technological Development - -DILIGENT (grant no. 004260); -* the Seventh Framework Programme for research, technological development and -demonstration - D4Science (grant no. 212488), D4Science-II (grant no. -239019),ENVRI (grant no. 283465), EUBrazilOpenBio (grant no. 288754), iMarine -(grant no. 283644); -* the H2020 research and innovation programme - BlueBRIDGE (grant no. 675680), -EGIEngage (grant no. 654142), ENVRIplus (grant no. 654182), Parthenos (grant -no. 654119), SoBigData (grant no. 654024); - - -Version --------------------------------------------------- - -1.0.0-SNAPSHOT (2017-05-29) - -Please see the file named "changelog.xml" in this directory for the release notes. - - -Authors --------------------------------------------------- - -* Alessandro Pieve (alessandro.pieve@isti.cnr.it), CNR, Italy - - -Maintainers ------------ - -* Alessandro Pieve (alessandro.pieve@isti.cnr.it), CNR, Italy -* Lucio Lelii (lucio.lelii@isti.cnr.it), CNR, Italy - - -Download information --------------------------------------------------- - -Source code is available from SVN: - ${scm.url} - -Binaries can be downloaded from the gCube website: - https://www.gcube-system.org/ - - -Installation --------------------------------------------------- - -Installation documentation is available on-line in the gCube Wiki: - https://wiki.gcube-system.org/gcube/index.php/3MConnector - - -Documentation --------------------------------------------------- - -Documentation is available on-line in the gCube Wiki: - https://wiki.gcube-system.org/gcube/index.php/3MConnector - - -Support --------------------------------------------------- - -Bugs and support requests can be reported in the gCube issue tracking tool: - https://support.d4science.org/projects/gcube/ - - -Licensing --------------------------------------------------- - -This software is licensed under the terms you may find in the file named "LICENSE" in this directory. \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/changelog.xml b/src/main/webapp/WEB-INF/changelog.xml deleted file mode 100644 index a424f6d..0000000 --- a/src/main/webapp/WEB-INF/changelog.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - First Release - - \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/descriptor.xml b/src/main/webapp/WEB-INF/descriptor.xml deleted file mode 100644 index e94232c..0000000 --- a/src/main/webapp/WEB-INF/descriptor.xml +++ /dev/null @@ -1,32 +0,0 @@ - - servicearchive - - tar.gz - - / - - - /home/lucafrosini/workspace/accunting-service/distro - / - true - - README - LICENSE - changelog.xml - profile.xml - - 755 - true - - - - - target/accounting-service-1.0.0-SNAPSHOT.war - /accounting-service - - - - \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/gcube-app.xml b/src/main/webapp/WEB-INF/gcube-app.xml deleted file mode 100644 index 842a005..0000000 --- a/src/main/webapp/WEB-INF/gcube-app.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - accounting-service - DataPublishing - 1.0.0-SNAPSHOT - Service Accounting Manger - - /* - - diff --git a/src/main/webapp/WEB-INF/profile.xml b/src/main/webapp/WEB-INF/profile.xml deleted file mode 100644 index dee39a4..0000000 --- a/src/main/webapp/WEB-INF/profile.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Service - - Service Accounting Manger - DataPublishing - accounting-service - 1.0.0 - - - accounting-service - 1.0.0-SNAPSHOT - - org.gcube.data.publishing - accounting-service - 1.0.0-SNAPSHOT - - - accounting-service-1.0.0-SNAPSHOT.jar - - - - - - diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index a8a4e6b..0000000 --- a/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - Accounting Service - Accounting service - - org.gcube.data.publishing.accounting.service.AccountingResource - - - com.sun.jersey.api.json.POJOMappingFeature - true - - - - - - org.gcube.data.publishing.accounting.service.AccountingResource - /gcube/service/* - - -