Compare commits
114 Commits
Author | SHA1 | Date |
---|---|---|
Luca Frosini | 6c67cccd63 | |
Luca Frosini | 0c547f14e3 | |
lucio | 7ecf6a2f77 | |
lucio | 3a69a8dfca | |
luca.frosini | 3910ed1bf0 | |
lucio | bdc6998f6d | |
Lucio Lelii | 96979e9289 | |
Luca Frosini | 7c0c1b1c90 | |
Luca Frosini | c7540455d8 | |
Luca Frosini | 9011b0262d | |
Luca Frosini | 5637b3c0af | |
Luca Frosini | 372b5a2e5d | |
Luca Frosini | b2a8885fe3 | |
Luca Frosini | d516325660 | |
Luca Frosini | 248c745e69 | |
Luca Frosini | 841a1e45e6 | |
Luca Frosini | ffb9220fb2 | |
Luca Frosini | 26bc2e2128 | |
Luca Frosini | 16c3da5a65 | |
Luca Frosini | e7cd46c5c6 | |
Luca Frosini | bb495149ab | |
Luca Frosini | 86c98b84d0 | |
Luca Frosini | 234e81613a | |
Luca Frosini | 0f6790f3d4 | |
Luca Frosini | d965d63ed3 | |
Luca Frosini | af48d1929c | |
Luca Frosini | 5bc7453225 | |
Luca Frosini | 83820adbcf | |
Luca Frosini | ad54aa46d6 | |
Luca Frosini | ffbca01f18 | |
Luca Frosini | e45a17f543 | |
Luca Frosini | e3d4611bb9 | |
Luca Frosini | e229f7278e | |
Luca Frosini | d771bcb5b0 | |
Luca Frosini | e0bbc9268e | |
Luca Frosini | 02e390ca60 | |
Luca Frosini | e5ffc25d34 | |
Luca Frosini | 02854fab2c | |
Luca Frosini | 875f34c86b | |
Luca Frosini | 4384074a8f | |
Luca Frosini | 5d5570adeb | |
Luca Frosini | 458c274186 | |
Luca Frosini | e73126d5c2 | |
Luca Frosini | 185e104127 | |
Luca Frosini | d53dd33644 | |
Luca Frosini | 4043693338 | |
Luca Frosini | 4d46476c9e | |
Luca Frosini | efa6c47c26 | |
Luca Frosini | f657e1c4b4 | |
Luca Frosini | fbbfa34702 | |
Luca Frosini | 4bdb6f8ae3 | |
Luca Frosini | f379063638 | |
Luca Frosini | 34935414ea | |
Luca Frosini | ead2ad393b | |
Luca Frosini | a59c89ae8f | |
Luca Frosini | 650244485c | |
Luca Frosini | 1b3008e654 | |
Luca Frosini | 9505d86d81 | |
Luca Frosini | d17a98cbaa | |
Luca Frosini | 45e1577dfe | |
Luca Frosini | d4437c7e84 | |
Luca Frosini | 242a88e661 | |
Luca Frosini | 0cdc4aba75 | |
Luca Frosini | 340563dde6 | |
Luca Frosini | 0bb35b2b84 | |
Luca Frosini | 94625ab6ce | |
Luca Frosini | 1deed3256b | |
Luca Frosini | e151b63f09 | |
Luca Frosini | cc6878dca2 | |
Luca Frosini | c4b6808b36 | |
Luca Frosini | 04b2b6e89b | |
Luca Frosini | f345679c89 | |
Luca Frosini | c02a374ecf | |
Luca Frosini | 7655b4089d | |
Luca Frosini | 2d8ca8e1f3 | |
Luca Frosini | e2258102d6 | |
Luca Frosini | 58f9dc9cad | |
Luca Frosini | 6b7feaee29 | |
Luca Frosini | 5f82f611c3 | |
Luca Frosini | 97d3b55322 | |
Luca Frosini | 7e0cbeb503 | |
Luca Frosini | e0a91e0d19 | |
Luca Frosini | e0f7710cee | |
Luca Frosini | 0010d60026 | |
Luca Frosini | 6b15c2cb0a | |
Luca Frosini | 0d33c3901e | |
Luca Frosini | eeb8f9b8d7 | |
Luca Frosini | d72858196c | |
Luca Frosini | b3f0754615 | |
Luca Frosini | aac55d6a34 | |
Luca Frosini | c09944d4e9 | |
Luca Frosini | c2d006b996 | |
Luca Frosini | 26afb0a5a4 | |
Luca Frosini | b41507522b | |
Luca Frosini | b381e98688 | |
Luca Frosini | 2e66d3f7c1 | |
Luca Frosini | 3081ec378b | |
Luca Frosini | 0cc9613413 | |
Luca Frosini | 850159db4b | |
Luca Frosini | 85ffffe272 | |
Luca Frosini | 7eaa611767 | |
Luca Frosini | 0f7fbaf79f | |
Luca Frosini | c661f9a52c | |
Luca Frosini | 64f35ff0b6 | |
Luca Frosini | 2cf3b76a68 | |
Luca Frosini | 264d22b3a0 | |
Luca Frosini | c0d50f7c3a | |
Luca Frosini | 7f0ae4a681 | |
Luca Frosini | 7bf508a480 | |
Luca Frosini | 9990ea57e8 | |
Luca Frosini | 5b53d12ce2 | |
Luca Frosini | 02b4bcff38 | |
Luca Frosini | f6f7466839 | |
Luca Frosini | a6d3ec40c1 |
36
.classpath
36
.classpath
|
@ -1,36 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
|
@ -1 +1,5 @@
|
|||
target
|
||||
.classpath
|
||||
.project
|
||||
/.settings/
|
||||
/.DS_Store
|
||||
|
|
23
.project
23
.project
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>accounting-lib-trunk_ultimo</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,102 @@
|
|||
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
# Changelog for Accounting Library
|
||||
|
||||
## [v5.0.0-SNAPSHOT]
|
||||
|
||||
- removed old Providers
|
||||
- Added compatibility between smartgears 3 and smartgears 4 component
|
||||
|
||||
|
||||
## [v4.1.0]
|
||||
|
||||
- Deprecated not needed properties to reduce data and improve aggregation
|
||||
- Improved regex to comply with new version of Thredds called methods [#18053]
|
||||
|
||||
|
||||
## [v4.0.0] [r.5.0.0] -
|
||||
|
||||
- Switched JSON management to gcube-jackson [#19115]
|
||||
- Properly terminated RegexRulesAggregator scheduled thread [#18547]
|
||||
- Added improved version of calledMethod rewrite for aggregation [#10645]
|
||||
|
||||
|
||||
## [v3.5.0] - 2019-11-06
|
||||
|
||||
- Removed usage of deprecated APIs
|
||||
|
||||
|
||||
## [v3.4.0] [r4.12.1] - 2018-10-10
|
||||
|
||||
- Fixed backends factory management
|
||||
- Using different pools for Scheduled Thread [#12184]
|
||||
|
||||
|
||||
## [v3.3.0] [r4.11.0] - 2018-04-12
|
||||
|
||||
- Added support to retrieve Accounting Regex rules through Service Endpoint [#11230]
|
||||
- Added LOCAL as additional value of DataType
|
||||
|
||||
|
||||
## [v3.2.0] [r4.10.0] - 2018-02-15
|
||||
|
||||
- Changed pom.xml to use new make-servicearchive directive [#10142]
|
||||
- Added the possibility to rewrite the calledMethod by matching a regular expression [#10646]
|
||||
|
||||
|
||||
## [v3.1.0] [r4.7.0] - 2017-12-06
|
||||
|
||||
- Refined Jackson support [#9617]
|
||||
- Changed JobUsageRecord Model [#9646]
|
||||
- Removed TaskUsageRecord [#9647]
|
||||
|
||||
|
||||
## [v3.0.0] [r4.5.0] - 2017-06-07
|
||||
|
||||
- Added Jackson support on Usage Record model to allow to use it for marshalling and unmarshalling
|
||||
|
||||
|
||||
## [v2.4.1] [r4.4.0] - 2017-05-02
|
||||
|
||||
- Added shutdown() method to pass to document store lib [#7345]
|
||||
|
||||
|
||||
## [v2.4.0] [r4.3.0] - 2017-03-16
|
||||
|
||||
- Added new Usage Record (StorageStatusRecord) [#5789]
|
||||
|
||||
|
||||
## [v2.3.0] [r4.1.0] - 2016-11-07
|
||||
|
||||
- Added callerQualifier field to ServiceUsageRecord [#4949]
|
||||
|
||||
|
||||
## [v2.2.0] [r3.11.0] - 2016-05-18
|
||||
|
||||
- Removed dependency over reflection library [#2358]
|
||||
|
||||
|
||||
## [v2.1.0] [r3.10.1] - 2016-04-08
|
||||
|
||||
- Ready for ScopeProvider Removal [#2201]
|
||||
- Fixed Bug on StorageUsageRecord aggregation [#2316]
|
||||
- Fixed Bug on recovery of UsageRecords accounted on Fallback [#2437]
|
||||
|
||||
|
||||
## [v2.0.0] [r3.10.0] - 2016-02-08
|
||||
|
||||
- Separated Accounting Model and generalize solution. The library now depends from document-store-lib [#1746]
|
||||
- UsageRecords discovered dynamically on classpath [#1295]
|
||||
- Persistence is re-checked every 10 minutes when Fallback is used [#1349]
|
||||
- Repetitive thread retry to persist UsageRecords accounted on Fallback [#1352]
|
||||
|
||||
|
||||
## [v1.1.0] [r3.9.0] - 2015-12-09
|
||||
|
||||
- Changed Single and Aggregated classes names to avoid mistakes for the developers [#436]
|
||||
|
||||
|
||||
## [v1.0.0] - 2015-10-01
|
||||
|
||||
- First Release [#200]
|
||||
|
|
@ -0,0 +1,312 @@
|
|||
# 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
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
# Accounting Library
|
||||
|
||||
Accounting Library is responsible of collecting, harmonizing and storing Accounting data.
|
||||
|
||||
## Built With
|
||||
|
||||
* [OpenJDK](https://openjdk.java.net/) - The JDK used
|
||||
* [Maven](https://maven.apache.org/) - Dependency Management
|
||||
|
||||
## Documentation
|
||||
|
||||
[Accounting Library](https://wiki.gcube-system.org/gcube/Accounting_Library)
|
||||
|
||||
## Change log
|
||||
|
||||
See [Releases](https://code-repo.d4science.org/gCubeSystem/accounting-lib/releases).
|
||||
|
||||
## Authors
|
||||
|
||||
* **Luca Frosini** ([ORCID](https://orcid.org/0000-0003-3183-2291)) - [ISTI-CNR Infrascience Group](http://nemis.isti.cnr.it/groups/infrascience)
|
||||
|
||||
## How to Cite this Software
|
||||
|
||||
Tell people how to cite this software.
|
||||
* Cite an associated paper?
|
||||
* Use a specific BibTeX entry for the software?
|
||||
|
||||
|
||||
@Manual{,
|
||||
title = {Accounting Library},
|
||||
author = {{Frosini, Luca}},
|
||||
organization = {ISTI - CNR},
|
||||
address = {Pisa, Italy},
|
||||
year = 2019,
|
||||
url = {http://www.gcube-system.org/}
|
||||
}
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the EUPL V.1.1 License - see the [LICENSE.md](LICENSE.md) file for details.
|
||||
|
||||
|
||||
## About the gCube Framework
|
||||
This software is part of the [gCubeFramework](https://www.gcube-system.org/ "gCubeFramework"): 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);
|
||||
- iMarine(grant no. 283644);
|
||||
- EUBrazilOpenBio (grant no. 288754).
|
||||
- the H2020 research and innovation programme
|
||||
- SoBigData (grant no. 654024);
|
||||
- PARTHENOS (grant no. 654119);
|
||||
- EGIEngage (grant no. 654142);
|
||||
- ENVRIplus (grant no. 654182);
|
||||
- BlueBRIDGE (grant no. 675680);
|
||||
- PerformFish (grant no. 727610);
|
||||
- AGINFRAplus (grant no. 731001);
|
||||
- DESIRA (grant no. 818194);
|
||||
- ARIADNEplus (grant no. 823914);
|
||||
- RISIS2 (grant no. 824091);
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
gCube System - License
|
||||
------------------------------------------------------------
|
||||
|
||||
${gcube.license}
|
|
@ -1,67 +0,0 @@
|
|||
The gCube System - ${name}
|
||||
--------------------------------------------------
|
||||
|
||||
${description}
|
||||
|
||||
|
||||
${gcube.description}
|
||||
|
||||
${gcube.funding}
|
||||
|
||||
|
||||
Version
|
||||
--------------------------------------------------
|
||||
|
||||
${version} (${buildDate})
|
||||
|
||||
Please see the file named "changelog.xml" in this directory for the release notes.
|
||||
|
||||
|
||||
Authors
|
||||
--------------------------------------------------
|
||||
|
||||
* Luca Frosini (luca.frosini-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy).
|
||||
* Alessandro Pieve (alessandro.pieve-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy).
|
||||
|
||||
|
||||
Maintainers
|
||||
-----------
|
||||
|
||||
* Luca Frosini (luca.frosini-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy).
|
||||
|
||||
|
||||
Download information
|
||||
--------------------------------------------------
|
||||
|
||||
Source code is available from SVN:
|
||||
${scm.url}
|
||||
|
||||
Binaries can be downloaded from the gCube website:
|
||||
${gcube.website}
|
||||
|
||||
|
||||
Installation
|
||||
--------------------------------------------------
|
||||
|
||||
Installation documentation is available on-line in the gCube Wiki:
|
||||
${gcube.wikiRoot}/Accounting_Lib
|
||||
|
||||
|
||||
Documentation
|
||||
--------------------------------------------------
|
||||
|
||||
Documentation is available on-line in the gCube Wiki:
|
||||
${gcube.wikiRoot}/Accounting_Lib
|
||||
|
||||
|
||||
Support
|
||||
--------------------------------------------------
|
||||
|
||||
Bugs and support requests can be reported in the gCube issue tracking tool:
|
||||
${gcube.issueTracking}
|
||||
|
||||
|
||||
Licensing
|
||||
--------------------------------------------------
|
||||
|
||||
This software is licensed under the terms you may find in the file named "LICENSE" in this directory.
|
|
@ -1,55 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE xml>
|
||||
<ReleaseNotes>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.3-5-0" date="${buildDate}">
|
||||
<Change></Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.3-4-0" date="2018-10-10">
|
||||
<Change>Fixed backends factory management</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.3-3-0" date="2018-04-12">
|
||||
<Change>Added support to retrieve Accounting Regex rules through Service Endpoint #11230</Change>
|
||||
<Change>Added LOCAL as additional value of DataType</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.3-2-0" date="2017-02-15">
|
||||
<Change>Changed pom.xml to use new make-servicearchive directive #10142</Change>
|
||||
<Change>Added the possibility to rewrite the calledMethod which match a regular expression #10646</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.3-1-0" date="2017-10-09">
|
||||
<Change>Refined Jackson support #9617</Change>
|
||||
<Change>Changed JobUsageRecord Model #9646</Change>
|
||||
<Change>Removed TaskUsageRecord #9647</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.3-0-0" date="2017-06-07">
|
||||
<Change>Added Jackson support on Usage Record model to allow to use it for marshalling and unmarshalling</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.2-4-1" date="2017-05-02">
|
||||
<Change>Added shutdown() method to pass to document store lib</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.2-4-0" date="2017-03-16">
|
||||
<Change>Added new Usage Record (StorageStatusRecord)</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.2-3-0" date="2016-11-07">
|
||||
<Change>Added callerQualifier field to ServiceUsageRecord #4949</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.2-2-0" date="2016-05-18">
|
||||
<Change>Removed dependency over reflection library (refs #2358)</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.2-1-0" date="2016-04-08">
|
||||
<Change>Ready for ScopeProvider Removal #2194</Change>
|
||||
<Change>Fixed Bug on StorageUsageRecord aggregation #2316</Change>
|
||||
<Change>Fixed Bug on recovery of UsageRecords accounted on Fallback</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.2-0-0" date="2016-02-08">
|
||||
<Change>Separated Accounting Model and generalize solution. the library now depends from document-store-lib #1746</Change>
|
||||
<Change>Managed UsageRecords discovered dinamically on classpath #1295</Change>
|
||||
<Change>Persistence is re-checked every 10 min when Fallback is used #1349</Change>
|
||||
<Change>Repetitive thread retry to persist UsageRecords accounted on Fallback #1352</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.1-1-0" date="2015-12-09">
|
||||
<Change>Changed Single and Aggregated classes names to avoid mistakes for the developers.</Change>
|
||||
</Changeset>
|
||||
<Changeset component="org.gcube.accounting.accounting-lib.1-0-0" date="2015-05-27">
|
||||
<Change>First Release</Change>
|
||||
</Changeset>
|
||||
</ReleaseNotes>
|
|
@ -1,28 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE xml>
|
||||
<Resource>
|
||||
<ID />
|
||||
<Type>Service</Type>
|
||||
<Profile>
|
||||
<Description>${description}</Description>
|
||||
<Class>${serviceClass}</Class>
|
||||
<Name>${artifactId}</Name>
|
||||
<Version>1.0.0</Version>
|
||||
<Packages>
|
||||
<Software>
|
||||
<Description>${description}</Description>
|
||||
<Name>${artifactId}</Name>
|
||||
<Version>${version}</Version>
|
||||
<MavenCoordinates>
|
||||
<groupId>${groupId}</groupId>
|
||||
<artifactId>${artifactId}</artifactId>
|
||||
<version>${version}</version>
|
||||
</MavenCoordinates>
|
||||
<Type>Library</Type>
|
||||
<Files>
|
||||
<File>${build.finalName}.${project.packaging}</File>
|
||||
</Files>
|
||||
</Software>
|
||||
</Packages>
|
||||
</Profile>
|
||||
</Resource>
|
78
pom.xml
78
pom.xml
|
@ -1,54 +1,38 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.gcube.tools</groupId>
|
||||
<artifactId>maven-parent</artifactId>
|
||||
<version>1.1.0</version>
|
||||
<version>1.2.0</version>
|
||||
</parent>
|
||||
|
||||
<groupId>org.gcube.accounting</groupId>
|
||||
<artifactId>accounting-lib</artifactId>
|
||||
<version>3.5.0</version>
|
||||
<version>5.0.0-SNAPSHOT</version>
|
||||
<name>Accounting Library</name>
|
||||
<description>Accounting Library</description>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<distroDirectory>${project.basedir}/distro</distroDirectory>
|
||||
<serviceClass>Accounting</serviceClass>
|
||||
</properties>
|
||||
|
||||
<scm>
|
||||
<connection>scm:git:https://code-repo.d4science.org/gCubeSystem/${project.artifactId}.git</connection>
|
||||
<developerConnection>scm:git:https://code-repo.d4science.org/gCubeSystem/${project.artifactId}.git</developerConnection>
|
||||
<url>https://code-repo.d4science.org/gCubeSystem/${project.artifactId}</url>
|
||||
</scm>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.gcube.distribution</groupId>
|
||||
<artifactId>gcube-bom</artifactId>
|
||||
<version>LATEST</version>
|
||||
<version>3.0.0</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>authorization-client</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>common-authorization</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.data.publishing</groupId>
|
||||
<artifactId>document-store-lib</artifactId>
|
||||
|
@ -56,47 +40,29 @@
|
|||
<dependency>
|
||||
<groupId>org.gcube.resources.discovery</groupId>
|
||||
<artifactId>ic-client</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.resources.discovery</groupId>
|
||||
<artifactId>discovery-client</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.resources</groupId>
|
||||
<artifactId>common-gcore-resources</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.core</groupId>
|
||||
<artifactId>common-encryption</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>gcube-jackson-databind</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jackson</groupId>
|
||||
<artifactId>jackson-core-asl</artifactId>
|
||||
<version>1.9.13</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jackson</groupId>
|
||||
<artifactId>jackson-mapper-asl</artifactId>
|
||||
<version>1.9.13</version>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>common-utility-sg4</artifactId>
|
||||
</dependency>
|
||||
<!-- Test Dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.gcube.common.security</groupId>
|
||||
<artifactId>gcube-secrets</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
|
@ -106,23 +72,7 @@
|
|||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>1.0.13</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>make-servicearchive</id>
|
||||
<phase>package</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -8,27 +8,32 @@ import java.util.concurrent.ScheduledFuture;
|
|||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.gcube.accounting.datamodel.validations.validators.RegexReplace;
|
||||
import org.gcube.accounting.datamodel.validations.validators.MatcherReplace;
|
||||
import org.gcube.accounting.persistence.AccountingPersistenceConfiguration;
|
||||
import org.gcube.com.fasterxml.jackson.databind.JavaType;
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.documentstore.persistence.ExecutorUtils;
|
||||
import org.gcube.documentstore.records.DSMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.fasterxml.jackson.databind.JavaType;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
public class RegexRulesAggregator implements Runnable {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(RegexRulesAggregator.class);
|
||||
|
||||
private static final ScheduledExecutorService REGEX_REDISCOVERY_POOL;
|
||||
public static final ScheduledExecutorService REGEX_REDISCOVERY_POOL;
|
||||
|
||||
protected static final String DELAY = "delay";
|
||||
protected static final String TIME_UNIT = "timeUnit";
|
||||
|
||||
protected static final String MATCHER_REPLACE_RULES = "MatcherReplaceRules";
|
||||
|
||||
static {
|
||||
|
||||
REGEX_REDISCOVERY_POOL = Executors.newScheduledThreadPool(50, new ThreadFactory() {
|
||||
|
||||
private int counter = 0;
|
||||
private static final String prefix = "RegexRediscoveryThread";
|
||||
private static final String prefix = "AggregationRegexRediscoveryThread";
|
||||
|
||||
public Thread newThread(Runnable r) {
|
||||
return new Thread(r, prefix + "-" + counter++);
|
||||
|
@ -37,23 +42,21 @@ public class RegexRulesAggregator implements Runnable {
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected TimeUnit timeUnit = TimeUnit.MINUTES;
|
||||
protected long delay = TimeUnit.MINUTES.toMinutes(15);
|
||||
|
||||
protected static final String DELAY = "delay";
|
||||
protected static final String TIME_UNIT = "timeUnit";
|
||||
protected static final String JSON_ARRAY_CALLED_METHOD_RULES = "jsonArrayCalledMethodRules";
|
||||
|
||||
protected ScheduledFuture<?> rulesReloader;
|
||||
|
||||
protected List<RegexReplace> regexReplaceList;
|
||||
protected List<MatcherReplace> matcherReplaceList;
|
||||
|
||||
protected AccountingPersistenceConfiguration accountingPersistenceConfiguration;
|
||||
|
||||
protected static RegexRulesAggregator instance;
|
||||
|
||||
protected boolean changeRate;
|
||||
|
||||
protected ScheduledFuture<?> reloadAggregatorRules;
|
||||
|
||||
public synchronized static RegexRulesAggregator getInstance() {
|
||||
if(instance==null) {
|
||||
instance = new RegexRulesAggregator();
|
||||
|
@ -62,51 +65,64 @@ public class RegexRulesAggregator implements Runnable {
|
|||
}
|
||||
|
||||
protected RegexRulesAggregator() {
|
||||
regexReplaceList = new ArrayList<>();
|
||||
matcherReplaceList = new ArrayList<>();
|
||||
changeRate = false;
|
||||
readConfiguration();
|
||||
}
|
||||
|
||||
public List<RegexReplace> getRegexReplaceList() {
|
||||
synchronized(regexReplaceList) {
|
||||
return regexReplaceList;
|
||||
public List<MatcherReplace> getMatcherReplaceList() {
|
||||
synchronized(matcherReplaceList) {
|
||||
return matcherReplaceList;
|
||||
}
|
||||
}
|
||||
|
||||
public RegexReplace addRegexReplace(String serviceClass, String serviceName, String regex, String replace) {
|
||||
RegexReplace regexReplace = new RegexReplace(serviceClass, serviceName, regex, replace);
|
||||
return addRegexReplace(regexReplace);
|
||||
}
|
||||
|
||||
public RegexReplace addRegexReplace(RegexReplace regexReplace) {
|
||||
synchronized(regexReplaceList) {
|
||||
regexReplaceList.add(regexReplace);
|
||||
public MatcherReplace addMatcherReplace(MatcherReplace matcherReplace) {
|
||||
synchronized(matcherReplaceList) {
|
||||
matcherReplaceList.add(matcherReplace);
|
||||
}
|
||||
return regexReplace;
|
||||
return matcherReplace;
|
||||
}
|
||||
|
||||
public void vacumRules() {
|
||||
synchronized(matcherReplaceList) {
|
||||
matcherReplaceList = new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
protected ScheduledFuture<?> reloadAggregatorRules;
|
||||
|
||||
public void readConfiguration() {
|
||||
try {
|
||||
accountingPersistenceConfiguration = new AccountingPersistenceConfiguration(this.getClass());
|
||||
|
||||
try {
|
||||
long oldDelay = delay;
|
||||
|
||||
String delayString = accountingPersistenceConfiguration.getProperty(DELAY);
|
||||
delay = Long.parseLong(delayString);
|
||||
if(oldDelay!=delay) {
|
||||
changeRate = true;
|
||||
}
|
||||
|
||||
TimeUnit oldTimeUnit = timeUnit;
|
||||
|
||||
String timeUnitString = accountingPersistenceConfiguration.getProperty(TIME_UNIT);
|
||||
timeUnit = TimeUnit.valueOf(timeUnitString.toUpperCase());
|
||||
|
||||
if(oldTimeUnit.ordinal() != timeUnit.ordinal()) {
|
||||
changeRate = true;
|
||||
}
|
||||
|
||||
}catch (Exception e) {
|
||||
logger.warn("Unable to retrieve regex reload delay. Goign to use last known delay {} {}", delay, timeUnit.name().toLowerCase());
|
||||
}
|
||||
|
||||
String rulesString = accountingPersistenceConfiguration.getProperty(JSON_ARRAY_CALLED_METHOD_RULES);
|
||||
String rulesString = accountingPersistenceConfiguration.getProperty(MATCHER_REPLACE_RULES);
|
||||
ObjectMapper mapper = DSMapper.getObjectMapper();
|
||||
JavaType type = mapper.getTypeFactory().constructCollectionType(List.class, RegexReplace.class);
|
||||
List<RegexReplace> rules = mapper.readValue(rulesString, type);
|
||||
synchronized(regexReplaceList) {
|
||||
regexReplaceList = rules;
|
||||
JavaType type = mapper.getTypeFactory().constructCollectionType(List.class, MatcherReplace.class);
|
||||
|
||||
List<MatcherReplace> rules = mapper.readValue(rulesString, type);
|
||||
synchronized(matcherReplaceList) {
|
||||
matcherReplaceList = rules;
|
||||
}
|
||||
|
||||
} catch(Exception e) {
|
||||
|
@ -117,9 +133,9 @@ public class RegexRulesAggregator implements Runnable {
|
|||
@Override
|
||||
public void run() {
|
||||
readConfiguration();
|
||||
}
|
||||
|
||||
public void start() {
|
||||
if(changeRate) {
|
||||
stop();
|
||||
}
|
||||
if(reloadAggregatorRules == null) {
|
||||
reloadAggregatorRules = REGEX_REDISCOVERY_POOL.scheduleAtFixedRate(this, delay, delay, timeUnit);
|
||||
}
|
||||
|
@ -139,4 +155,14 @@ public class RegexRulesAggregator implements Runnable {
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void start() {
|
||||
|
||||
}
|
||||
|
||||
public static void shutdown() {
|
||||
RegexRulesAggregator.getInstance().stop();
|
||||
ExecutorUtils.shutDownPool(RegexRulesAggregator.REGEX_REDISCOVERY_POOL);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,10 +9,8 @@ import java.util.SortedSet;
|
|||
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidOperationResult;
|
||||
import org.gcube.accounting.datamodel.validations.validators.ValidOperationResultValidator;
|
||||
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.scope.api.ScopeProvider;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.common.context.ContextUtility;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.implementation.AbstractRecord;
|
||||
import org.gcube.documentstore.records.implementation.RequiredField;
|
||||
|
@ -20,8 +18,6 @@ import org.gcube.documentstore.records.implementation.validations.annotations.No
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
@ -46,23 +42,7 @@ public abstract class BasicUsageRecord extends AbstractRecord implements UsageRe
|
|||
@ValidOperationResult
|
||||
public static final String OPERATION_RESULT = UsageRecord.OPERATION_RESULT;
|
||||
|
||||
public static String getContextFromToken() {
|
||||
|
||||
String scope = ScopeProvider.instance.get();
|
||||
if (scope == null) {
|
||||
String token = SecurityTokenProvider.instance.get();
|
||||
|
||||
AuthorizationEntry authorizationEntry;
|
||||
try {
|
||||
authorizationEntry = Constants.authorizationService().get(token);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
scope = authorizationEntry.getContext();
|
||||
}
|
||||
return scope;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialize variable
|
||||
*/
|
||||
|
@ -70,10 +50,11 @@ public abstract class BasicUsageRecord extends AbstractRecord implements UsageRe
|
|||
super.init();
|
||||
// Backward compatibility
|
||||
try {
|
||||
this.setScope(getContextFromToken());
|
||||
} catch (Exception e) {
|
||||
String context = ContextUtility.getCurrentContextFullName();
|
||||
this.setScope(context);
|
||||
} catch (Throwable t) {
|
||||
logger.warn(
|
||||
"Unable to automaticcally set the scope using scope provider. The record will not be valid if the scope will not be explicitly set.");
|
||||
"Unable to automatically set the context using the known providers. The record will not be valid if the scope will not be explicitly set.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,11 +2,10 @@ package org.gcube.accounting.datamodel;
|
|||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
|
|
@ -11,6 +11,8 @@ import org.gcube.accounting.datamodel.AggregatedUsageRecord;
|
|||
import org.gcube.accounting.datamodel.basetypes.AbstractJobUsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.JobUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.documentstore.records.aggregation.AggregationUtility;
|
||||
|
@ -18,9 +20,6 @@ import org.gcube.documentstore.records.implementation.AggregatedField;
|
|||
import org.gcube.documentstore.records.implementation.RequiredField;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.ValidLong;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* This Class is for library internal use only
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
|
|
|
@ -10,12 +10,11 @@ import java.util.Map;
|
|||
import org.gcube.accounting.datamodel.AggregatedUsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractPortletUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.PortletUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.documentstore.records.aggregation.AggregationUtility;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* This Class is for library internal use only
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
|
|
|
@ -10,6 +10,8 @@ import java.util.Map;
|
|||
import org.gcube.accounting.datamodel.AggregatedUsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.documentstore.records.aggregation.AggregationUtility;
|
||||
|
@ -17,9 +19,6 @@ import org.gcube.documentstore.records.implementation.AggregatedField;
|
|||
import org.gcube.documentstore.records.implementation.RequiredField;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.ValidLong;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* This Class is for library internal use only
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
|
|
|
@ -10,13 +10,12 @@ import java.util.Map;
|
|||
import org.gcube.accounting.datamodel.AggregatedUsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageStatusRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.StorageStatusRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.documentstore.records.aggregation.AggregationUtility;
|
||||
import org.gcube.documentstore.records.implementation.AggregatedField;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* This Class is for library internal use only
|
||||
* @author Alessandro Pieve (ISTI - CNR) alessandro.pieve@isti.cnr.it
|
||||
|
@ -117,10 +116,15 @@ public class AggregatedStorageStatusRecord extends AbstractStorageStatusRecord i
|
|||
throws NotAggregatableRecordsExceptions {
|
||||
try {
|
||||
AggregationUtility<AggregatedStorageStatusRecord> aggregationUtility = new AggregationUtility<AggregatedStorageStatusRecord>(this);
|
||||
Calendar thisStartTime = this.getStartTime();
|
||||
aggregationUtility.aggregate(record);
|
||||
this.setDataVolume(record.getDataVolume());
|
||||
this.setDataCount(record.getDataCount());
|
||||
|
||||
|
||||
// Getting the last value
|
||||
if(record.getStartTime().after(thisStartTime)) {
|
||||
this.setDataVolume(record.getDataVolume());
|
||||
this.setDataCount(record.getDataCount());
|
||||
}
|
||||
|
||||
}catch(NotAggregatableRecordsExceptions e){
|
||||
throw e;
|
||||
} catch(Exception ex){
|
||||
|
|
|
@ -10,13 +10,12 @@ import java.util.Map;
|
|||
import org.gcube.accounting.datamodel.AggregatedUsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.documentstore.records.aggregation.AggregationUtility;
|
||||
import org.gcube.documentstore.records.implementation.AggregatedField;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* This Class is for library internal use only
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package org.gcube.accounting.datamodel.backwardcompatibility;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.gcube.documentstore.records.implementation.FieldDecorator;
|
||||
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@FieldDecorator(action=MoveToProviderURIAction.class)
|
||||
public @interface MoveToProviderURI {
|
||||
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.accounting.datamodel.backwardcompatibility;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.net.URI;
|
||||
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageStatusRecord;
|
||||
import org.gcube.accounting.datamodel.validations.validators.ValidURIValidator;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
import org.gcube.documentstore.records.implementation.FieldAction;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*
|
||||
*/
|
||||
public class MoveToProviderURIAction implements FieldAction {
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Serializable validate(String key, Serializable value, Record record) throws InvalidValueException {
|
||||
ValidURIValidator validURIValidator = new ValidURIValidator();
|
||||
value = validURIValidator.validate(key, value, record);
|
||||
record.setResourceProperty(AbstractStorageStatusRecord.PROVIDER_URI, (URI) value);
|
||||
return null; //Returning null the initial key is removed from Record
|
||||
}
|
||||
|
||||
}
|
|
@ -7,13 +7,12 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.BasicUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.implementation.RequiredField;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.NotEmpty;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.ValidLong;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
|
|
@ -7,13 +7,12 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.BasicUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.implementation.RequiredField;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.NotEmpty;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.NotEmptyIfNotNull;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
|
|
@ -7,14 +7,13 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.BasicUsageRecord;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.CalledMethodRegexReplace;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.Harmonize;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.implementation.RequiredField;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.NotEmpty;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.ValidLong;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
@ -53,7 +52,7 @@ public abstract class AbstractServiceUsageRecord extends BasicUsageRecord {
|
|||
/**
|
||||
* KEY for : Called Method
|
||||
*/
|
||||
@RequiredField @NotEmpty @CalledMethodRegexReplace
|
||||
@RequiredField @NotEmpty @Harmonize
|
||||
public static final String CALLED_METHOD = "calledMethod";
|
||||
|
||||
/**
|
||||
|
|
|
@ -8,16 +8,17 @@ import java.net.URI;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.BasicUsageRecord;
|
||||
import org.gcube.accounting.datamodel.backwardcompatibility.MoveToProviderURI;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.DataType;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.FixDataVolumeSign;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidDataTypeVolume;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidDataType;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidURI;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.implementation.RequiredField;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.NotEmpty;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.ValidLong;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
/**
|
||||
* @author Alessandro Pieve (ISTI - CNR) alessandro.pieve@isti.cnr.it
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
|
@ -29,10 +30,6 @@ public abstract class AbstractStorageStatusRecord extends BasicUsageRecord {
|
|||
*/
|
||||
private static final long serialVersionUID = -5754343539116896036L;
|
||||
|
||||
public enum DataType {
|
||||
STORAGE, TREE, GEO, DATABASE, LOCAL, OTHER
|
||||
}
|
||||
|
||||
/**
|
||||
* KEY for : Quantity of data in terms of KB
|
||||
*/
|
||||
|
@ -43,39 +40,44 @@ public abstract class AbstractStorageStatusRecord extends BasicUsageRecord {
|
|||
* KEY for : type of data accessed.
|
||||
* The value is a controlled dictionary by StorageStatusRecord.DataType
|
||||
*/
|
||||
@RequiredField @ValidDataTypeVolume
|
||||
@RequiredField @ValidDataType
|
||||
public static final String DATA_TYPE = "dataType";
|
||||
|
||||
/**
|
||||
* KEY for : data Count number of objects
|
||||
*/
|
||||
@RequiredField @NotEmpty
|
||||
@RequiredField @ValidLong @NotEmpty
|
||||
public static final String DATA_COUNT = "dataCount";
|
||||
|
||||
/**
|
||||
* KEY for : data service class identifier
|
||||
*/
|
||||
@RequiredField @NotEmpty
|
||||
@Deprecated
|
||||
public static final String DATA_SERVICECLASS = "dataServiceClass";
|
||||
|
||||
/**
|
||||
* KEY for : data service name identifier
|
||||
*/
|
||||
@RequiredField @NotEmpty
|
||||
@Deprecated
|
||||
public static final String DATA_SERVICENAME = "dataServiceName";
|
||||
|
||||
|
||||
/**
|
||||
* KEY for : data service name id
|
||||
*/
|
||||
@RequiredField @NotEmpty
|
||||
@Deprecated
|
||||
public static final String DATA_SERVICEID = "dataServiceId";
|
||||
|
||||
/**
|
||||
* KEY for : providerId the identifier of the provider which is the target of a read/write operation
|
||||
*/
|
||||
@RequiredField @ValidURI
|
||||
@ValidURI @MoveToProviderURI
|
||||
@Deprecated
|
||||
public static final String PROVIDER_ID = "providerId";
|
||||
|
||||
@RequiredField @ValidURI
|
||||
public static final String PROVIDER_URI = "providerURI";
|
||||
|
||||
|
||||
|
||||
public AbstractStorageStatusRecord() {
|
||||
super();
|
||||
|
@ -119,40 +121,57 @@ public abstract class AbstractStorageStatusRecord extends BasicUsageRecord {
|
|||
setResourceProperty(DATA_COUNT, dataCount);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@JsonIgnore
|
||||
public String getDataServiceClass() {
|
||||
return (String) this.resourceProperties.get(DATA_SERVICECLASS);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setDataServiceClass(String dataServiceClass) throws InvalidValueException {
|
||||
setResourceProperty(DATA_SERVICECLASS, dataServiceClass);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@JsonIgnore
|
||||
public String getDataServiceName() {
|
||||
return (String) this.resourceProperties.get(DATA_SERVICENAME);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setDataServiceName(String dataServiceName) throws InvalidValueException {
|
||||
setResourceProperty(DATA_SERVICENAME, dataServiceName);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@JsonIgnore
|
||||
public String getDataServiceId() {
|
||||
return (String) this.resourceProperties.get(DATA_SERVICEID);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setDataServiceId(String dataServiceId) throws InvalidValueException {
|
||||
setResourceProperty(DATA_SERVICEID, dataServiceId);
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
@Deprecated
|
||||
public URI getProviderId() {
|
||||
return (URI) this.resourceProperties.get(PROVIDER_ID);
|
||||
return (URI) this.resourceProperties.get(PROVIDER_URI);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setProviderId(URI provideId) throws InvalidValueException {
|
||||
setResourceProperty(PROVIDER_ID, provideId);
|
||||
// setResourceProperty(PROVIDER_ID, provideId);
|
||||
setResourceProperty(PROVIDER_URI, provideId);
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public URI getProviderURI() {
|
||||
return (URI) this.resourceProperties.get(PROVIDER_URI);
|
||||
}
|
||||
|
||||
public void setProviderURI(URI provideURI) throws InvalidValueException {
|
||||
setResourceProperty(PROVIDER_URI, provideURI);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,14 +12,13 @@ import org.gcube.accounting.datamodel.validations.annotations.FixDataVolumeSign;
|
|||
import org.gcube.accounting.datamodel.validations.annotations.ValidDataType;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidOperationType;
|
||||
import org.gcube.accounting.datamodel.validations.annotations.ValidURI;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.implementation.RequiredField;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.NotEmpty;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.NotEmptyIfNotNull;
|
||||
import org.gcube.documentstore.records.implementation.validations.annotations.ValidLong;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
@ -35,7 +34,7 @@ public abstract class AbstractStorageUsageRecord extends BasicUsageRecord {
|
|||
}
|
||||
|
||||
public enum DataType {
|
||||
STORAGE, TREE, GEO, DATABASE, LOCAL, OTHER
|
||||
STORAGE, TREE, GEO, DATABASE, LOCAL, OTHER, JUPYTER, KUBERNETES
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -43,18 +42,20 @@ public abstract class AbstractStorageUsageRecord extends BasicUsageRecord {
|
|||
*/
|
||||
@RequiredField @NotEmpty
|
||||
public static final String RESOURCE_OWNER = "resourceOwner";
|
||||
|
||||
/**
|
||||
* KEY for : The Scope where the Resource was stored
|
||||
*/
|
||||
@RequiredField @NotEmpty
|
||||
@Deprecated
|
||||
public static final String RESOURCE_SCOPE = "resourceScope";
|
||||
|
||||
/**
|
||||
* KEY for : The URI of the Stored Resource
|
||||
*/
|
||||
@RequiredField @ValidURI
|
||||
@Deprecated
|
||||
public static final String RESOURCE_URI = "resourceURI";
|
||||
|
||||
|
||||
@RequiredField @ValidURI
|
||||
public static final String PROVIDER_URI = "providerURI";
|
||||
|
||||
|
@ -127,6 +128,7 @@ public abstract class AbstractStorageUsageRecord extends BasicUsageRecord {
|
|||
* Return the scope of the storage resource
|
||||
* @return The scope id of the storage resource
|
||||
*/
|
||||
@Deprecated
|
||||
@JsonIgnore
|
||||
public String getResourceScope() {
|
||||
return (String) this.resourceProperties.get(RESOURCE_SCOPE);
|
||||
|
@ -137,6 +139,7 @@ public abstract class AbstractStorageUsageRecord extends BasicUsageRecord {
|
|||
* @param scope the scope of the storage resource
|
||||
* @throws InvalidValueException
|
||||
*/
|
||||
@Deprecated
|
||||
public void setResourceScope(String scope) throws InvalidValueException {
|
||||
setResourceProperty(RESOURCE_SCOPE, scope);
|
||||
}
|
||||
|
@ -150,11 +153,13 @@ public abstract class AbstractStorageUsageRecord extends BasicUsageRecord {
|
|||
setResourceProperty(PROVIDER_URI, providerURI);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@JsonIgnore
|
||||
public URI getResourceURI() {
|
||||
return (URI) this.resourceProperties.get(RESOURCE_URI);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setResourceURI(URI resourceURI) throws InvalidValueException {
|
||||
setResourceProperty(RESOURCE_URI, resourceURI);
|
||||
}
|
||||
|
|
|
@ -4,10 +4,9 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractJobUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
|
|
@ -4,10 +4,9 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractPortletUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
|
|
@ -4,10 +4,9 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractServiceUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
|
|
@ -4,9 +4,8 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageStatusRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
/**
|
||||
* @author Alessandro Pieve (ISTI - CNR) alessandro.pieve@isti.cnr.it
|
||||
*
|
||||
|
|
|
@ -4,10 +4,9 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
package org.gcube.accounting.datamodel.validations.annotations;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.gcube.accounting.datamodel.validations.validators.CalledMethodRegexReplaceValidator;
|
||||
import org.gcube.documentstore.records.implementation.FieldDecorator;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@FieldDecorator(action=CalledMethodRegexReplaceValidator.class)
|
||||
public @interface CalledMethodRegexReplace {
|
||||
|
||||
}
|
|
@ -5,7 +5,7 @@ import java.lang.annotation.Retention;
|
|||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.gcube.accounting.datamodel.validations.validators.ValidDataTypeValidatorVolume;
|
||||
import org.gcube.accounting.datamodel.validations.validators.Harmonizer;
|
||||
import org.gcube.documentstore.records.implementation.FieldDecorator;
|
||||
|
||||
/**
|
||||
|
@ -13,7 +13,7 @@ import org.gcube.documentstore.records.implementation.FieldDecorator;
|
|||
*/
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@FieldDecorator(action=ValidDataTypeValidatorVolume.class)
|
||||
public @interface ValidDataTypeVolume {
|
||||
@FieldDecorator(action=Harmonizer.class)
|
||||
public @interface Harmonize {
|
||||
|
||||
}
|
|
@ -2,7 +2,6 @@ package org.gcube.accounting.datamodel.validations.validators;
|
|||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import org.gcube.accounting.aggregator.RegexRulesAggregator;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractServiceUsageRecord;
|
||||
|
@ -15,9 +14,9 @@ import org.slf4j.LoggerFactory;
|
|||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public class CalledMethodRegexReplaceValidator implements FieldAction {
|
||||
public class Harmonizer implements FieldAction {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(CalledMethodRegexReplaceValidator.class);
|
||||
private static Logger logger = LoggerFactory.getLogger(Harmonizer.class);
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
|
@ -33,8 +32,6 @@ public class CalledMethodRegexReplaceValidator implements FieldAction {
|
|||
throw new InvalidValueException(value.toString() + "is not a " + String.class.getSimpleName());
|
||||
}
|
||||
|
||||
String stringValue = (String) value;
|
||||
|
||||
AbstractServiceUsageRecord serviceUsageRecord = (AbstractServiceUsageRecord) record;
|
||||
|
||||
String serviceClass = serviceUsageRecord.getServiceClass();
|
||||
|
@ -49,19 +46,23 @@ public class CalledMethodRegexReplaceValidator implements FieldAction {
|
|||
return value;
|
||||
}
|
||||
|
||||
List<RegexReplace> regexReplaceList = RegexRulesAggregator.getInstance().getRegexReplaceList();
|
||||
List<MatcherReplace> matcherReplaceList = RegexRulesAggregator.getInstance().getMatcherReplaceList();
|
||||
|
||||
for(RegexReplace regexReplace : regexReplaceList) {
|
||||
if(serviceClass.compareTo(regexReplace.getServiceClass())==0 && serviceName.compareTo(regexReplace.getServiceName())==0) {
|
||||
Matcher matcher = regexReplace.regexPattern.matcher(stringValue);
|
||||
if(matcher.matches()) {
|
||||
// TODO allow regex replace using matcher
|
||||
return regexReplace.getReplace();
|
||||
}
|
||||
String calledMethod = (String) value;
|
||||
|
||||
for(MatcherReplace matcherReplace : matcherReplaceList) {
|
||||
Replace replace = matcherReplace.check(serviceClass, serviceName, calledMethod);
|
||||
if(replace != null) {
|
||||
serviceClass = replace.getServiceClass();
|
||||
serviceName = replace.getServiceName();
|
||||
calledMethod = replace.getCalledMethod();
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
serviceUsageRecord.setServiceClass(serviceClass);
|
||||
serviceUsageRecord.setServiceName(serviceName);
|
||||
|
||||
return calledMethod;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package org.gcube.accounting.datamodel.validations.validators;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonSetter;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.DSMapper;
|
||||
|
||||
public class MatcherReplace {
|
||||
|
||||
protected MultiMatcher multiMatcher;
|
||||
protected Replace replacementRegex;
|
||||
|
||||
public MatcherReplace() {}
|
||||
|
||||
public MultiMatcher getMultiMatcher() {
|
||||
return multiMatcher;
|
||||
}
|
||||
|
||||
@JsonSetter(value="match")
|
||||
public void setMultiMatcher(MultiMatcher multiMatcher) {
|
||||
this.multiMatcher = multiMatcher;
|
||||
}
|
||||
|
||||
protected Replace getReplacementRegex() {
|
||||
return replacementRegex;
|
||||
}
|
||||
|
||||
@JsonSetter(value="replace")
|
||||
public void setReplacementRegex(Replace replacementRegex) {
|
||||
this.replacementRegex = replacementRegex;
|
||||
}
|
||||
|
||||
public Replace check(String serviceClass, String serviceName, String calledMethod) throws InvalidValueException {
|
||||
boolean matched = multiMatcher.match(serviceClass, serviceName, calledMethod);
|
||||
Replace replace;
|
||||
if(matched) {
|
||||
replace = new Replace();
|
||||
|
||||
Matcher serviceClassMatcher = multiMatcher.getServiceClassPattern().matcher(serviceClass);
|
||||
String replacementServiceClass = replacementRegex.getServiceClass();
|
||||
String replaceServiceClass = serviceClassMatcher.replaceFirst(replacementServiceClass);
|
||||
replace.setServiceClass(replaceServiceClass);
|
||||
|
||||
Matcher serviceNameMatcher = multiMatcher.getServiceNamePattern().matcher(serviceName);
|
||||
String replacementServiceName = replacementRegex.getServiceName();
|
||||
String replaceServiceName = serviceNameMatcher.replaceFirst(replacementServiceName);
|
||||
replace.setServiceName(replaceServiceName);
|
||||
|
||||
Matcher calledMethodMatcher = multiMatcher.getCalledMethodPattern().matcher(calledMethod);
|
||||
String replacementCalledMethod = replacementRegex.getCalledMethod();
|
||||
String replaceCalledMethod = calledMethodMatcher.replaceFirst(replacementCalledMethod);
|
||||
replace.setCalledMethod(replaceCalledMethod);
|
||||
|
||||
}else {
|
||||
replace = null;
|
||||
}
|
||||
return replace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
try {
|
||||
return DSMapper.getObjectMapper().writeValueAsString(this);
|
||||
} catch(Exception e) {
|
||||
return "MatcherReplace [multiMatcher=" + multiMatcher + ", replacer=" + replacementRegex + "]";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
package org.gcube.accounting.datamodel.validations.validators;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
public class MultiMatcher {
|
||||
|
||||
protected String serviceClassRegex;
|
||||
@JsonIgnore
|
||||
protected Pattern serviceClassPattern;
|
||||
|
||||
protected String serviceNameRegex;
|
||||
@JsonIgnore
|
||||
protected Pattern serviceNamePattern;
|
||||
|
||||
protected String calledMethodRegex;
|
||||
@JsonIgnore
|
||||
protected Pattern calledMethodPattern;
|
||||
|
||||
protected MultiMatcher() {}
|
||||
|
||||
public MultiMatcher(String serviceClassRegex, String serviceNameRegex, String calledMethodRegex) {
|
||||
setServiceClassRegex(serviceClassRegex);
|
||||
setServiceNameRegex(serviceNameRegex);
|
||||
setCalledMethodRegex(calledMethodRegex);
|
||||
}
|
||||
|
||||
protected Pattern getPattern(String regex) {
|
||||
return Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
|
||||
}
|
||||
|
||||
public String getServiceClassRegex() {
|
||||
return serviceClassRegex;
|
||||
}
|
||||
|
||||
public void setServiceClassRegex(String serviceClassRegex) {
|
||||
this.serviceClassRegex = serviceClassRegex;
|
||||
this.serviceClassPattern = getPattern(serviceClassRegex);
|
||||
}
|
||||
|
||||
public String getServiceNameRegex() {
|
||||
return serviceNameRegex;
|
||||
}
|
||||
|
||||
public void setServiceNameRegex(String serviceNameRegex) {
|
||||
this.serviceNameRegex = serviceNameRegex;
|
||||
this.serviceNamePattern = getPattern(serviceNameRegex);
|
||||
}
|
||||
|
||||
public String getCalledMethodRegex() {
|
||||
return calledMethodRegex;
|
||||
}
|
||||
|
||||
public void setCalledMethodRegex(String calledMethodRegex) {
|
||||
this.calledMethodRegex = calledMethodRegex;
|
||||
this.calledMethodPattern = getPattern(calledMethodRegex);
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public boolean match(String serviceClass, String serviceName, String calledMethod) {
|
||||
return serviceClassPattern.matcher(serviceClass).matches() &&
|
||||
serviceNamePattern.matcher(serviceName).matches() &&
|
||||
calledMethodPattern.matcher(calledMethod).matches();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "MultiMatcher [serviceClassRegex=" + serviceClassRegex + ", serviceNameRegex=" + serviceNameRegex
|
||||
+ ", calledMethodRegex=" + calledMethodRegex + "]";
|
||||
}
|
||||
|
||||
public Pattern getServiceClassPattern() {
|
||||
return serviceClassPattern;
|
||||
}
|
||||
|
||||
public Pattern getServiceNamePattern() {
|
||||
return serviceNamePattern;
|
||||
}
|
||||
|
||||
public Pattern getCalledMethodPattern() {
|
||||
return calledMethodPattern;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
package org.gcube.accounting.datamodel.validations.validators;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class RegexReplace {
|
||||
|
||||
protected String serviceClass;
|
||||
protected String serviceName;
|
||||
|
||||
protected String regex;
|
||||
protected Pattern regexPattern;
|
||||
|
||||
protected String replace;
|
||||
|
||||
protected RegexReplace() {}
|
||||
|
||||
public RegexReplace(String serviceClass, String serviceName, String regex, String replace) {
|
||||
super();
|
||||
this.serviceClass = serviceClass;
|
||||
this.serviceName = serviceName;
|
||||
this.replace = replace;
|
||||
setRegex(regex);
|
||||
}
|
||||
|
||||
public String getServiceClass() {
|
||||
return serviceClass;
|
||||
}
|
||||
|
||||
public String getServiceName() {
|
||||
return serviceName;
|
||||
}
|
||||
|
||||
protected void setRegex(String regex) {
|
||||
this.regex = regex;
|
||||
this.regexPattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
|
||||
}
|
||||
|
||||
public String getRegex() {
|
||||
return regex;
|
||||
}
|
||||
|
||||
public Pattern getRegexPattern() {
|
||||
return regexPattern;
|
||||
}
|
||||
|
||||
public String getReplace() {
|
||||
return replace;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package org.gcube.accounting.datamodel.validations.validators;
|
||||
|
||||
public class Replace {
|
||||
|
||||
protected String serviceClass;
|
||||
protected String serviceName;
|
||||
protected String calledMethod;
|
||||
|
||||
public Replace() {
|
||||
|
||||
}
|
||||
|
||||
public Replace(String serviceClass, String serviceName, String calledMethod) {
|
||||
this.serviceClass = serviceClass;
|
||||
this.serviceName = serviceName;
|
||||
this.calledMethod = calledMethod;
|
||||
}
|
||||
|
||||
public String getServiceClass() {
|
||||
return serviceClass;
|
||||
}
|
||||
|
||||
public void setServiceClass(String serviceClass) {
|
||||
this.serviceClass = serviceClass;
|
||||
}
|
||||
|
||||
public String getServiceName() {
|
||||
return serviceName;
|
||||
}
|
||||
|
||||
public void setServiceName(String serviceName) {
|
||||
this.serviceName = serviceName;
|
||||
}
|
||||
|
||||
public String getCalledMethod() {
|
||||
return calledMethod;
|
||||
}
|
||||
|
||||
public void setCalledMethod(String calledMethod) {
|
||||
this.calledMethod = calledMethod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Replacer [serviceClass=" + serviceClass + ", serviceName=" + serviceName + ", calledMethod="
|
||||
+ calledMethod + "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -1,64 +0,0 @@
|
|||
package org.gcube.accounting.datamodel.validations.validators;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageStatusRecord.DataType;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
import org.gcube.documentstore.records.implementation.FieldAction;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public class ValidDataTypeValidatorVolume implements FieldAction {
|
||||
|
||||
private static final String ERROR = String.format("Not Instance of %s", DataType.class.getSimpleName());
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public Serializable validate(String key, Serializable value, Record record) throws InvalidValueException {
|
||||
if(value instanceof DataType){
|
||||
return value;
|
||||
}
|
||||
|
||||
try {
|
||||
if(value instanceof String){
|
||||
try{
|
||||
DataType dataType = DataType.valueOf((String) value);
|
||||
if(dataType !=null){
|
||||
return dataType;
|
||||
}
|
||||
} catch(Exception e){
|
||||
// Trying another way
|
||||
}
|
||||
|
||||
try{
|
||||
Integer integer = Integer.getInteger((String) value);
|
||||
if(integer!=null){
|
||||
value = integer;
|
||||
}
|
||||
} catch(Exception e){
|
||||
// Trying another way
|
||||
}
|
||||
}
|
||||
|
||||
if(value instanceof Integer){
|
||||
return DataType.values()[(Integer) value];
|
||||
}
|
||||
|
||||
if(value instanceof Enum){
|
||||
return DataType.values()[((Enum) value).ordinal()];
|
||||
}
|
||||
|
||||
}catch(Exception e){
|
||||
throw new InvalidValueException(ERROR, e);
|
||||
}
|
||||
|
||||
throw new InvalidValueException(ERROR);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -3,12 +3,11 @@
|
|||
*/
|
||||
package org.gcube.accounting.persistence;
|
||||
|
||||
import java.security.Key;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.datamodel.BasicUsageRecord;
|
||||
import org.gcube.common.encryption.StringEncrypter;
|
||||
import org.gcube.common.context.ContextUtility;
|
||||
import org.gcube.common.encryption.encrypter.StringEncrypter;
|
||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||||
import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
|
||||
|
@ -46,8 +45,9 @@ public class AccountingPersistenceConfiguration extends PersistenceBackendConfig
|
|||
ServiceEndpoint serviceEndpoint = getServiceEndpoint(SERVICE_ENDPOINT_CATEGORY, SERVICE_ENDPOINT_NAME, clz);
|
||||
setValues(serviceEndpoint, clz);
|
||||
}catch (Exception e) {
|
||||
logger.error("Error while instancing {} in context {}", this.getClass().getSimpleName(),
|
||||
BasicUsageRecord.getContextFromToken(), e);
|
||||
String context = ContextUtility.getCurrentContextFullName();
|
||||
logger.error("Error while instancing {} in context {}",
|
||||
this.getClass().getSimpleName(), context, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ public class AccountingPersistenceConfiguration extends PersistenceBackendConfig
|
|||
DiscoveryClient<ServiceEndpoint> client = ICFactory.clientFor(ServiceEndpoint.class);
|
||||
List<ServiceEndpoint> serviceEndpoints = client.submit(query);
|
||||
if(serviceEndpoints.size()>1){
|
||||
String scope = BasicUsageRecord.getContextFromToken();
|
||||
String scope = ContextUtility.getCurrentContextFullName();
|
||||
query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Name/text() eq '%s'", TARGET_SCOPE));
|
||||
query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Value/text() eq '%s'", scope));
|
||||
serviceEndpoints = client.submit(query);
|
||||
|
@ -75,7 +75,7 @@ public class AccountingPersistenceConfiguration extends PersistenceBackendConfig
|
|||
return serviceEndpoints.get(0);
|
||||
}
|
||||
|
||||
private static String decrypt(String encrypted, Key... key) throws Exception {
|
||||
private static String decrypt(String encrypted) throws Exception {
|
||||
return StringEncrypter.getEncrypter().decrypt(encrypted);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,11 +3,9 @@
|
|||
*/
|
||||
package org.gcube.accounting.persistence;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.gcube.accounting.datamodel.BasicUsageRecord;
|
||||
import org.gcube.accounting.aggregator.RegexRulesAggregator;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
|
||||
import org.gcube.documentstore.persistence.PersistenceBackendFactory;
|
||||
|
@ -16,19 +14,22 @@ import org.gcube.documentstore.persistence.PersistenceBackendFactory;
|
|||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public class AccountingPersistenceFactory {
|
||||
|
||||
|
||||
private AccountingPersistenceFactory(){}
|
||||
|
||||
protected final static Map<String, AccountingPersistence> persistences;
|
||||
//protected final static Map<String, AccountingPersistence> persistences;
|
||||
|
||||
protected final static AccountingPersistence accountingPersistence;
|
||||
|
||||
|
||||
public static void initAccountingPackages(){
|
||||
PersistenceBackendFactory.addRecordPackage(ServiceUsageRecord.class.getPackage());
|
||||
PersistenceBackendFactory.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage());
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
persistences = new HashMap<String, AccountingPersistence>();
|
||||
//persistences = new HashMap<String, AccountingPersistence>();
|
||||
accountingPersistence = new AccountingPersistence(null);
|
||||
initAccountingPackages();
|
||||
}
|
||||
|
||||
|
@ -37,12 +38,14 @@ public class AccountingPersistenceFactory {
|
|||
}
|
||||
|
||||
public synchronized static AccountingPersistence getPersistence() {
|
||||
/*
|
||||
String context = BasicUsageRecord.getContextFromToken();
|
||||
AccountingPersistence accountingPersistence = persistences.get(context);
|
||||
if(accountingPersistence==null){
|
||||
accountingPersistence = new AccountingPersistence(context);
|
||||
persistences.put(context, accountingPersistence);
|
||||
}
|
||||
*/
|
||||
return accountingPersistence;
|
||||
}
|
||||
|
||||
|
@ -60,12 +63,13 @@ public class AccountingPersistenceFactory {
|
|||
AccountingPersistenceFactory.flushAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush all accounting data and shutdown connection and scheduled thread
|
||||
*/
|
||||
public static void shutDown(){
|
||||
//flush all and shutdown connection and thread
|
||||
PersistenceBackendFactory.flushAll();
|
||||
PersistenceBackendFactory.shutdown();
|
||||
|
||||
|
||||
RegexRulesAggregator.shutdown();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package org.gcube.accounting.aggregator;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.accounting.datamodel.validations.validators.MatcherReplace;
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.documentstore.records.DSMapper;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class HarmonizerTest extends ContextTest {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(HarmonizerTest.class);
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
RegexRulesAggregator regexRulesAggregator = RegexRulesAggregator.getInstance();
|
||||
List<MatcherReplace> list = regexRulesAggregator.getMatcherReplaceList();
|
||||
for(MatcherReplace matcherReplace : list) {
|
||||
logger.debug("{}", matcherReplace);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnMarshallingMatcherReplace() throws Exception {
|
||||
InputStream inputStream = HarmonizerTest.class.getClassLoader().getResourceAsStream("rule.json");
|
||||
ObjectMapper mapper = DSMapper.getObjectMapper();
|
||||
MatcherReplace matcherReplace = mapper.readValue(inputStream, MatcherReplace.class);
|
||||
logger.debug("{}", matcherReplace);
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
package org.gcube.accounting.aggregator;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.accounting.datamodel.validations.validators.RegexReplace;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class RegexRulesAggregatorTest extends ScopedTest {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(RegexRulesAggregatorTest.class);
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
RegexRulesAggregator regexRulesAggregator = RegexRulesAggregator.getInstance();
|
||||
List<RegexReplace> list = regexRulesAggregator.getRegexReplaceList();
|
||||
for(RegexReplace regexReplace : list) {
|
||||
logger.debug("{} {} {} {}", regexReplace.getServiceClass(), regexReplace.getServiceName(), regexReplace.getRegex(), regexReplace.getReplace());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -7,11 +7,9 @@ import java.util.Set;
|
|||
|
||||
import org.gcube.accounting.datamodel.usagerecords.JobUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.JobUsageRecordTest;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -21,14 +19,12 @@ import org.slf4j.LoggerFactory;
|
|||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public class AggregatedJobUsageRecordTest extends ScopedTest {
|
||||
public class AggregatedJobUsageRecordTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(AggregatedJobUsageRecordTest.class);
|
||||
|
||||
@Test
|
||||
public void testRequiredFields() throws InvalidValueException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
|
||||
JobUsageRecord jobUsageRecord = TestUsageRecord.createTestJobUsageRecord();
|
||||
Assert.assertTrue(jobUsageRecord.getScope()==null);
|
||||
|
@ -56,9 +52,7 @@ public class AggregatedJobUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
|
||||
|
||||
JobUsageRecord jobUsageRecord = TestUsageRecord.createTestJobUsageRecord();
|
||||
Assert.assertTrue(jobUsageRecord.getScope()==null);
|
||||
jobUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
@ -105,8 +99,6 @@ public class AggregatedJobUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
|
||||
JobUsageRecord jobUsageRecord = TestUsageRecord.createTestJobUsageRecord();
|
||||
Assert.assertTrue(jobUsageRecord.getScope()==null);
|
||||
|
@ -158,8 +150,6 @@ public class AggregatedJobUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
|
||||
JobUsageRecord jobUsageRecord = TestUsageRecord.createTestJobUsageRecord();
|
||||
Assert.assertTrue(jobUsageRecord.getScope()==null);
|
||||
|
|
|
@ -5,35 +5,29 @@ package org.gcube.accounting.datamodel.aggregation;
|
|||
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecordTest;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.documentstore.records.DSMapper;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*
|
||||
*/
|
||||
public class AggregatedServiceUsageRecordTest extends ScopedTest {
|
||||
public class AggregatedServiceUsageRecordTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(AggregatedServiceUsageRecordTest.class);
|
||||
|
||||
@Test
|
||||
public void testRequiredFields() throws InvalidValueException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
|
||||
Assert.assertTrue(serviceUsageRecord.getScope()==null);
|
||||
serviceUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
@ -60,8 +54,6 @@ public class AggregatedServiceUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
|
||||
Assert.assertTrue(serviceUsageRecord.getScope()==null);
|
||||
serviceUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
@ -107,8 +99,6 @@ public class AggregatedServiceUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
|
||||
Assert.assertTrue(serviceUsageRecord.getScope()==null);
|
||||
serviceUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
@ -157,8 +147,6 @@ public class AggregatedServiceUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions, JsonProcessingException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
|
||||
Assert.assertTrue(serviceUsageRecord.getScope()==null);
|
||||
serviceUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
|
|
@ -7,11 +7,9 @@ import java.util.Set;
|
|||
|
||||
import org.gcube.accounting.datamodel.usagerecords.StorageStatusRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.StorageStatusRecordTest;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -22,14 +20,12 @@ import org.slf4j.LoggerFactory;
|
|||
* @author Alessandro Pieve (ISTI - CNR) alessandro.pieve@isti.cnr.it
|
||||
*
|
||||
*/
|
||||
public class AggregatedStorageStatusRecordTest extends ScopedTest {
|
||||
public class AggregatedStorageStatusRecordTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(AggregatedStorageStatusRecordTest.class);
|
||||
|
||||
@Test
|
||||
public void testRequiredFields() throws InvalidValueException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageStatusRecord storageVolumeUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
Assert.assertTrue(storageVolumeUsageRecord.getScope()==null);
|
||||
storageVolumeUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
@ -52,32 +48,30 @@ public class AggregatedStorageStatusRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageStatusRecord storageVolumeUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
Assert.assertTrue(storageVolumeUsageRecord.getScope()==null);
|
||||
storageVolumeUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
StorageStatusRecord storageStatusUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
Assert.assertTrue(storageStatusUsageRecord.getScope()==null);
|
||||
storageStatusUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
||||
storageVolumeUsageRecord.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE);
|
||||
storageVolumeUsageRecord.validate();
|
||||
logger.debug("StorageVolumeUsageRecord : {}", storageVolumeUsageRecord);
|
||||
storageStatusUsageRecord.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE);
|
||||
storageStatusUsageRecord.validate();
|
||||
logger.debug("StorageVolumeUsageRecord : {}", storageStatusUsageRecord);
|
||||
|
||||
AggregatedStorageStatusRecord aggregated = new AggregatedStorageStatusRecord(storageVolumeUsageRecord);
|
||||
AggregatedStorageStatusRecord aggregated = new AggregatedStorageStatusRecord(storageStatusUsageRecord);
|
||||
logger.debug("StorageVolumeUsageRecord Converted to Aggregated: {}", aggregated);
|
||||
aggregated.validate();
|
||||
|
||||
StorageStatusRecord storageVolumeUsageRecord2 = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
storageVolumeUsageRecord2.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
StorageStatusRecord storageStatusUsageRecord2 = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
storageStatusUsageRecord2.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
||||
storageVolumeUsageRecord2.validate();
|
||||
logger.debug("StorageVolumeUsageRecord 2 : {}", storageVolumeUsageRecord2);
|
||||
storageStatusUsageRecord2.validate();
|
||||
logger.debug("StorageVolumeUsageRecord 2 : {}", storageStatusUsageRecord2);
|
||||
|
||||
|
||||
long secondDataVolume = storageVolumeUsageRecord2.getDataVolume();
|
||||
long secondDataVolume = storageStatusUsageRecord2.getDataVolume();
|
||||
|
||||
long secondDataCount = storageVolumeUsageRecord2.getDataCount();
|
||||
long secondDataCount = storageStatusUsageRecord2.getDataCount();
|
||||
|
||||
aggregated.aggregate(storageVolumeUsageRecord2);
|
||||
aggregated.aggregate(storageStatusUsageRecord2);
|
||||
logger.debug("Resulting Aggregated StorageVolumeUsageRecord: {}", aggregated);
|
||||
aggregated.validate();
|
||||
|
||||
|
@ -87,11 +81,14 @@ public class AggregatedStorageStatusRecordTest extends ScopedTest {
|
|||
Assert.assertFalse(aggregated.getResourceProperties().containsKey(TestUsageRecord.TEST_PROPERTY_NAME));
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Test
|
||||
public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageStatusRecord storageStatusUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
storageStatusUsageRecord.setDataServiceClass("DataServiceClass1");
|
||||
storageStatusUsageRecord.setDataServiceName("DataServiceName1");
|
||||
storageStatusUsageRecord.setDataServiceId("DataServiceId1");
|
||||
|
||||
Assert.assertTrue(storageStatusUsageRecord.getScope()==null);
|
||||
storageStatusUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
storageStatusUsageRecord.validate();
|
||||
|
@ -102,6 +99,10 @@ public class AggregatedStorageStatusRecordTest extends ScopedTest {
|
|||
aggregated.validate();
|
||||
|
||||
StorageStatusRecord storageVolumeUsageRecord2 = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
storageVolumeUsageRecord2.setDataServiceClass("DataServiceClass2");
|
||||
storageVolumeUsageRecord2.setDataServiceName("DataServiceName2");
|
||||
storageVolumeUsageRecord2.setDataServiceId("DataServiceId2");
|
||||
|
||||
Assert.assertTrue(storageVolumeUsageRecord2.getScope()==null);
|
||||
storageVolumeUsageRecord2.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
storageVolumeUsageRecord2.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE);
|
||||
|
@ -129,8 +130,6 @@ public class AggregatedStorageStatusRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageStatusRecord storageVolumeUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
Assert.assertTrue(storageVolumeUsageRecord.getScope()==null);
|
||||
storageVolumeUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
|
|
@ -3,16 +3,14 @@
|
|||
*/
|
||||
package org.gcube.accounting.datamodel.aggregation;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecordTest;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -23,14 +21,12 @@ import org.slf4j.LoggerFactory;
|
|||
* @author Luca Frosini (ISTI - CNR)
|
||||
*
|
||||
*/
|
||||
public class AggregatedStorageUsageRecordTest extends ScopedTest {
|
||||
public class AggregatedStorageUsageRecordTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(AggregatedStorageUsageRecordTest.class);
|
||||
|
||||
@Test
|
||||
public void testRequiredFields() throws InvalidValueException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
||||
Assert.assertTrue(storageUsageRecord.getScope()==null);
|
||||
storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
@ -53,8 +49,6 @@ public class AggregatedStorageUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
||||
Assert.assertTrue(storageUsageRecord.getScope()==null);
|
||||
storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
@ -85,11 +79,13 @@ public class AggregatedStorageUsageRecordTest extends ScopedTest {
|
|||
Assert.assertFalse(aggregated.getResourceProperties().containsKey(TestUsageRecord.TEST_PROPERTY_NAME));
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Test
|
||||
public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
public void secondAsAggregated() throws Exception {
|
||||
StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
||||
storageUsageRecord.setResourceScope("/gcube");
|
||||
storageUsageRecord.setResourceURI(new URI("resourceURI"));
|
||||
|
||||
Assert.assertTrue(storageUsageRecord.getScope()==null);
|
||||
storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
storageUsageRecord.validate();
|
||||
|
@ -100,6 +96,9 @@ public class AggregatedStorageUsageRecordTest extends ScopedTest {
|
|||
aggregated.validate();
|
||||
|
||||
StorageUsageRecord storageUsageRecord2 = TestUsageRecord.createTestStorageUsageRecord();
|
||||
storageUsageRecord2.setResourceScope("/gcube/devsec");
|
||||
storageUsageRecord2.setResourceURI(new URI("anotherResourceURI"));
|
||||
|
||||
Assert.assertTrue(storageUsageRecord2.getScope()==null);
|
||||
storageUsageRecord2.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
storageUsageRecord2.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE);
|
||||
|
@ -123,8 +122,6 @@ public class AggregatedStorageUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
||||
Assert.assertTrue(storageUsageRecord.getScope()==null);
|
||||
storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
|
|
@ -8,11 +8,9 @@ import java.util.Set;
|
|||
|
||||
import org.gcube.accounting.datamodel.UsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractJobUsageRecord;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -23,7 +21,7 @@ import org.slf4j.LoggerFactory;
|
|||
* @author Luca Frosini (ISTI - CNR)
|
||||
*
|
||||
*/
|
||||
public class JobUsageRecordTest extends ScopedTest {
|
||||
public class JobUsageRecordTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(JobUsageRecordTest.class);
|
||||
|
||||
|
@ -46,8 +44,6 @@ public class JobUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test(expected=InvalidValueException.class)
|
||||
public void scopeNotSetValidationError() throws InvalidValueException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
JobUsageRecord usageRecord = TestUsageRecord.createTestJobUsageRecord();
|
||||
usageRecord.validate();
|
||||
logger.debug("{}", usageRecord);
|
||||
|
@ -55,8 +51,6 @@ public class JobUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void testRequiredFields() throws InvalidValueException{
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
JobUsageRecord usageRecord = TestUsageRecord.createTestJobUsageRecord();
|
||||
Assert.assertTrue(usageRecord.getScope()==null);
|
||||
usageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
|
|
@ -12,15 +12,13 @@ import org.gcube.accounting.aggregator.RegexRulesAggregator;
|
|||
import org.gcube.accounting.datamodel.UsageRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.validations.validators.RegexReplace;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.accounting.datamodel.validations.validators.MatcherReplace;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.DSMapper;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
import org.gcube.documentstore.records.RecordUtility;
|
||||
import org.gcube.documentstore.records.aggregation.AggregationScheduler;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -30,7 +28,7 @@ import org.slf4j.LoggerFactory;
|
|||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public class ServiceUsageRecordTest extends ScopedTest {
|
||||
public class ServiceUsageRecordTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(ServiceUsageRecordTest.class);
|
||||
|
||||
|
@ -53,8 +51,6 @@ public class ServiceUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test(expected=InvalidValueException.class)
|
||||
public void scopeNotSetValidationError() throws InvalidValueException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord();
|
||||
usageRecord.validate();
|
||||
logger.debug("{}", usageRecord);
|
||||
|
@ -62,8 +58,6 @@ public class ServiceUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void testRequiredFields() throws InvalidValueException{
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord();
|
||||
Assert.assertTrue(usageRecord.getScope()==null);
|
||||
usageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
@ -126,6 +120,18 @@ public class ServiceUsageRecordTest extends ScopedTest {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeserialization2() throws Exception{
|
||||
RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage());
|
||||
RecordUtility.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage());
|
||||
|
||||
String line = "{\"recordType\":\"ServiceUsageRecord\",\"operationCount\":1,\"creationTime\":1591043453061,\"serviceClass\":\"DataAnalysis\",\"callerHost\":\"80.134.224.170\",\"callerQualifier\": \"TOKEN\",\"consumerId\":\"lisa.chong8594\",\"aggregated\":true,\"serviceName\":\"RConnector\",\"duration\":5328,\"maxInvocationTime\":5328,\"scope\":\"/d4science.research-infrastructures.eu/gCubeApps/StockAssessment\",\"host\":\"rstudio.d4science.org:80\",\"startTime\":1591043453058,\"id\":\"ec925c66-a7e9-4b2a-b0bd-8896ba24edab\",\"calledMethod\":\"/gcube/service/connect\",\"endTime\":1591043453058,\"minInvocationTime\":5328,\"operationResult\":\"SUCCESS\"}";
|
||||
Record record = RecordUtility.getRecord(line);
|
||||
|
||||
logger.debug("{}", record);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void aRegexReplaceTest() throws Exception{
|
||||
RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage());
|
||||
|
@ -174,9 +180,9 @@ public class ServiceUsageRecordTest extends ScopedTest {
|
|||
logger.debug("{}", usageRecord);
|
||||
|
||||
RegexRulesAggregator regexRulesAggregator = RegexRulesAggregator.getInstance();
|
||||
List<RegexReplace> list = regexRulesAggregator.getRegexReplaceList();
|
||||
for(RegexReplace regexReplace : list) {
|
||||
logger.debug("{} {} {} {}", regexReplace.getServiceClass(), regexReplace.getServiceName(), regexReplace.getRegex(), regexReplace.getReplace());
|
||||
List<MatcherReplace> list = regexRulesAggregator.getMatcherReplaceList();
|
||||
for(MatcherReplace matcherReplace : list) {
|
||||
logger.debug("{}", matcherReplace);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -8,11 +8,9 @@ import java.util.Set;
|
|||
|
||||
import org.gcube.accounting.datamodel.UsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageStatusRecord;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -23,7 +21,7 @@ import org.slf4j.LoggerFactory;
|
|||
* @author Alessandro Pieve (ISTI - CNR) alessandro.pieve@isti.cnr.it
|
||||
*
|
||||
*/
|
||||
public class StorageStatusRecordTest extends ScopedTest {
|
||||
public class StorageStatusRecordTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(StorageStatusRecordTest.class);
|
||||
|
||||
|
@ -37,9 +35,6 @@ public class StorageStatusRecordTest extends ScopedTest {
|
|||
expectedRequiredFields.add(AbstractStorageStatusRecord.DATA_VOLUME);
|
||||
expectedRequiredFields.add(AbstractStorageStatusRecord.DATA_COUNT);
|
||||
expectedRequiredFields.add(AbstractStorageStatusRecord.DATA_TYPE);
|
||||
expectedRequiredFields.add(AbstractStorageStatusRecord.DATA_SERVICECLASS);
|
||||
expectedRequiredFields.add(AbstractStorageStatusRecord.DATA_SERVICENAME);
|
||||
expectedRequiredFields.add(AbstractStorageStatusRecord.DATA_SERVICEID);
|
||||
expectedRequiredFields.add(AbstractStorageStatusRecord.PROVIDER_ID);
|
||||
|
||||
return expectedRequiredFields;
|
||||
|
@ -47,8 +42,6 @@ public class StorageStatusRecordTest extends ScopedTest {
|
|||
|
||||
@Test(expected=InvalidValueException.class)
|
||||
public void scopeNotSetValidationError() throws InvalidValueException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageStatusRecord usageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
usageRecord.validate();
|
||||
logger.debug("{}", usageRecord);
|
||||
|
@ -56,8 +49,6 @@ public class StorageStatusRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void testRequiredFields() throws InvalidValueException{
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageStatusRecord usageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord();
|
||||
Assert.assertTrue(usageRecord.getScope()==null);
|
||||
usageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
|
|
@ -8,11 +8,9 @@ import java.util.Set;
|
|||
|
||||
import org.gcube.accounting.datamodel.UsageRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.documentstore.exception.InvalidValueException;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -23,7 +21,7 @@ import org.slf4j.LoggerFactory;
|
|||
* @author Luca Frosini (ISTI - CNR)
|
||||
*
|
||||
*/
|
||||
public class StorageUsageRecordTest extends ScopedTest {
|
||||
public class StorageUsageRecordTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(StorageUsageRecordTest.class);
|
||||
|
||||
|
@ -35,8 +33,6 @@ public class StorageUsageRecordTest extends ScopedTest {
|
|||
expectedRequiredFields.add(UsageRecord.SCOPE);
|
||||
expectedRequiredFields.add(UsageRecord.OPERATION_RESULT);
|
||||
expectedRequiredFields.add(AbstractStorageUsageRecord.RESOURCE_OWNER);
|
||||
expectedRequiredFields.add(AbstractStorageUsageRecord.RESOURCE_SCOPE);
|
||||
expectedRequiredFields.add(AbstractStorageUsageRecord.RESOURCE_URI);
|
||||
expectedRequiredFields.add(AbstractStorageUsageRecord.PROVIDER_URI);
|
||||
expectedRequiredFields.add(AbstractStorageUsageRecord.OPERATION_TYPE);
|
||||
expectedRequiredFields.add(AbstractStorageUsageRecord.DATA_TYPE);
|
||||
|
@ -47,8 +43,6 @@ public class StorageUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test(expected=InvalidValueException.class)
|
||||
public void scopeNotSetValidationError() throws InvalidValueException {
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageUsageRecord usageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
||||
usageRecord.validate();
|
||||
logger.debug("{}", usageRecord);
|
||||
|
@ -56,8 +50,6 @@ public class StorageUsageRecordTest extends ScopedTest {
|
|||
|
||||
@Test
|
||||
public void testRequiredFields() throws InvalidValueException{
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
StorageUsageRecord usageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
||||
Assert.assertTrue(usageRecord.getScope()==null);
|
||||
usageRecord.setScope(TestUsageRecord.TEST_SCOPE);
|
||||
|
|
|
@ -0,0 +1,282 @@
|
|||
package org.gcube.accounting.datamodel.validations.validators;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FilenameFilter;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.accounting.aggregator.RegexRulesAggregator;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions;
|
||||
import org.gcube.documentstore.records.DSMapper;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class TestRules extends ContextTest {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(TestRules.class);
|
||||
|
||||
public File getRulesDirectory() throws Exception {
|
||||
URL logbackFileURL = TestRules.class.getClassLoader().getResource("logback-test.xml");
|
||||
File logbackFile = new File(logbackFileURL.toURI());
|
||||
File resourcesDirectory = logbackFile.getParentFile();
|
||||
return new File(resourcesDirectory, "rules");
|
||||
}
|
||||
|
||||
protected long durationWeightedAverage(int numberA, long durationA, int numberB, long durationB) {
|
||||
return ((numberA * durationA) + (numberB * durationB)) / (numberA + numberB);
|
||||
}
|
||||
|
||||
public List<File> allRules() throws Exception {
|
||||
File rulesDirectory = getRulesDirectory();
|
||||
FilenameFilter filenameFilter = new FilenameFilter() {
|
||||
@Override
|
||||
public boolean accept(File dir, String name) {
|
||||
return name.endsWith(".json");
|
||||
}
|
||||
};
|
||||
|
||||
List<File> rulesFiles = new ArrayList<>();
|
||||
for(File dir : rulesDirectory.listFiles()) {
|
||||
if(!dir.isDirectory()) {
|
||||
continue;
|
||||
}
|
||||
rulesFiles.addAll(Arrays.asList(dir.listFiles(filenameFilter)));
|
||||
RegexRulesAggregator regexRulesAggregator = RegexRulesAggregator.getInstance();
|
||||
regexRulesAggregator.vacumRules();
|
||||
for(File rulesFile : rulesFiles) {
|
||||
ObjectMapper mapper = DSMapper.getObjectMapper();
|
||||
MatcherReplace matcherReplace = mapper.readValue(rulesFile, MatcherReplace.class);
|
||||
regexRulesAggregator.addMatcherReplace(matcherReplace);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return rulesFiles;
|
||||
}
|
||||
|
||||
public void testRule(File rulesFile) throws Exception {
|
||||
logger.info(
|
||||
"-----------------------------------------------------------------------------------------------------");
|
||||
logger.info("Analisyng rule from file {}\n", rulesFile.getAbsolutePath());
|
||||
File rulesDirectory = rulesFile.getParentFile();
|
||||
|
||||
ObjectMapper mapper = DSMapper.getObjectMapper();
|
||||
MatcherReplace matcherReplace = mapper.readValue(rulesFile, MatcherReplace.class);
|
||||
Replace replacementRegex = matcherReplace.getReplacementRegex();
|
||||
|
||||
Map<String,AggregatedServiceUsageRecord> aggregatedMap = new HashMap<>();
|
||||
|
||||
AggregatedServiceUsageRecord aggregated;
|
||||
|
||||
// it indicates that the rules can create multiple calledMethod because the replacement is based on
|
||||
// Named Capture Group
|
||||
|
||||
final String requiredMatchesFileName = rulesFile.getName().replaceAll(".json", ".csv");
|
||||
File elaborationFile = new File(rulesDirectory, requiredMatchesFileName);
|
||||
try(BufferedReader br = new BufferedReader(new FileReader(elaborationFile))) {
|
||||
int lineNumber = 1;
|
||||
for(String line; (line = br.readLine()) != null;) {
|
||||
String[] splittedLine = line.split(",");
|
||||
|
||||
String serviceClass = splittedLine[0];
|
||||
String serviceName = splittedLine[1];
|
||||
String calledMethod = splittedLine[2];
|
||||
|
||||
Replace replace = matcherReplace.check(serviceClass, serviceName, calledMethod);
|
||||
if(replace != null) {
|
||||
logger.info("line {}: {} --> {},{},{}", lineNumber, line, replace.getServiceClass(), replace.getServiceName(),
|
||||
replace.getCalledMethod());
|
||||
} else {
|
||||
logger.error("{} (line {}) does not match {}. This MUST not occur.", line, lineNumber,
|
||||
matcherReplace.getMultiMatcher().toString());
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
String obtainedTriple = replace.getServiceClass() + "+++" + replace.getServiceName() + "+++"
|
||||
+ replace.getCalledMethod();
|
||||
if(aggregatedMap.containsKey(obtainedTriple)) {
|
||||
aggregated = aggregatedMap.get(obtainedTriple);
|
||||
} else {
|
||||
ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
|
||||
serviceUsageRecord.setServiceClass(replace.getServiceClass());
|
||||
serviceUsageRecord.setServiceName(replace.getServiceName());
|
||||
serviceUsageRecord.setCalledMethod(replace.getCalledMethod());
|
||||
serviceUsageRecord.validate();
|
||||
aggregated = new AggregatedServiceUsageRecord(serviceUsageRecord);
|
||||
aggregatedMap.put(obtainedTriple, aggregated);
|
||||
}
|
||||
|
||||
ServiceUsageRecord sur = TestUsageRecord.createTestServiceUsageRecord();
|
||||
sur.setServiceClass(serviceClass);
|
||||
sur.setServiceName(serviceName);
|
||||
sur.setCalledMethod(calledMethod);
|
||||
sur.validate();
|
||||
sur.validate();
|
||||
// logger.trace("To Be aggregated ServiceUsageRecord {}", sur);
|
||||
|
||||
long oldMinInvocationTime = aggregated.getMinInvocationTime();
|
||||
long oldMaxInvocationTime = aggregated.getMaxInvocationTime();
|
||||
int oldOperationCount = aggregated.getOperationCount();
|
||||
long oldDuration = aggregated.getDuration();
|
||||
|
||||
long surDuration = sur.getDuration();
|
||||
|
||||
try {
|
||||
aggregated.aggregate(sur);
|
||||
//logger.debug("Resulting Aggregated ServiceUsageRecord: {}", aggregated);
|
||||
}catch(NotAggregatableRecordsExceptions e) {
|
||||
logger.error("The Record is not aggregatable : {}", sur);
|
||||
throw e;
|
||||
}
|
||||
|
||||
long avgDuration = durationWeightedAverage(oldOperationCount, oldDuration, 1, surDuration);
|
||||
Assert.assertTrue(aggregated.getDuration() == (avgDuration));
|
||||
Assert.assertTrue(aggregated.getOperationCount() == ++oldOperationCount);
|
||||
|
||||
if(oldMinInvocationTime >= surDuration) {
|
||||
Assert.assertTrue(aggregated.getMinInvocationTime() == surDuration);
|
||||
} else {
|
||||
Assert.assertTrue(aggregated.getMinInvocationTime() == oldMinInvocationTime);
|
||||
}
|
||||
|
||||
if(oldMaxInvocationTime >= surDuration) {
|
||||
Assert.assertTrue(aggregated.getMaxInvocationTime() == oldMaxInvocationTime);
|
||||
} else {
|
||||
Assert.assertTrue(aggregated.getMaxInvocationTime() == surDuration);
|
||||
}
|
||||
|
||||
++lineNumber;
|
||||
|
||||
}
|
||||
} catch(Exception e) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
FilenameFilter filenameFilter = new FilenameFilter() {
|
||||
@Override
|
||||
public boolean accept(File dir, String name) {
|
||||
boolean accept = name.endsWith(".csv");
|
||||
return name.compareTo(requiredMatchesFileName) != 0 && accept;
|
||||
}
|
||||
};
|
||||
|
||||
for(File elaborationFileNoMatch : rulesDirectory.listFiles(filenameFilter)) {
|
||||
logger.info("Comparing examples which must not match from file {}", elaborationFileNoMatch.getName());
|
||||
try(BufferedReader br = new BufferedReader(new FileReader(elaborationFileNoMatch))) {
|
||||
int lineCounter = 1;
|
||||
for(String line; (line = br.readLine()) != null;) {
|
||||
try {
|
||||
String[] splittedLine = line.split(",");
|
||||
String serviceClass = splittedLine[0];
|
||||
String serviceName = splittedLine[1];
|
||||
String calledMethod = splittedLine[2];
|
||||
Replace replace = matcherReplace.check(serviceClass, serviceName, calledMethod);
|
||||
if(replace != null) {
|
||||
logger.error("{} match {} but it should NOT. This MUST not occur.", line,
|
||||
matcherReplace.getMultiMatcher().toString());
|
||||
throw new Exception();
|
||||
} else {
|
||||
logger.trace("{} does NOT match as requested", line, replacementRegex.getServiceClass(),
|
||||
replacementRegex.getServiceName(), replacementRegex.getCalledMethod());
|
||||
}
|
||||
|
||||
ServiceUsageRecord sur = TestUsageRecord.createTestServiceUsageRecord();
|
||||
sur.setServiceClass(serviceClass);
|
||||
sur.setServiceName(serviceName);
|
||||
sur.setCalledMethod(calledMethod);
|
||||
sur.validate();
|
||||
//logger.trace("Should not be aggregated ServiceUsageRecord {}", sur);
|
||||
for(AggregatedServiceUsageRecord asur : aggregatedMap.values()) {
|
||||
try {
|
||||
asur.aggregate(sur);
|
||||
logger.error("The record {} (line {}) has been aggregated and it should NOT", sur, lineCounter);
|
||||
throw new Exception("The record has been aggregated and it should NOT");
|
||||
} catch(NotAggregatableRecordsExceptions e) {
|
||||
//logger.trace("{} is not aggragable as expected", sur);
|
||||
}
|
||||
}
|
||||
++lineCounter;
|
||||
}catch (Exception e) {
|
||||
logger.error("line {}", lineCounter, e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
} catch(Exception e) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(
|
||||
"-----------------------------------------------------------------------------------------------------\n\n\n");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testSingleRule() throws Exception {
|
||||
allRules();
|
||||
File rulesDirectory = getRulesDirectory();
|
||||
File rulesDirFile = new File(rulesDirectory, "3MConnector");
|
||||
File ruleFile = new File(rulesDirFile, "3MConnector-connect.json");
|
||||
testRule(ruleFile);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllRuleInAdirectory() throws Exception {
|
||||
allRules();
|
||||
File rulesDirectory = getRulesDirectory();
|
||||
File rulesDirFile = new File(rulesDirectory, "Thredds");
|
||||
|
||||
FilenameFilter filenameFilter = new FilenameFilter() {
|
||||
@Override
|
||||
public boolean accept(File dir, String name) {
|
||||
return name.endsWith(".json");
|
||||
}
|
||||
};
|
||||
|
||||
List<File> rulesFiles = new ArrayList<>();
|
||||
rulesFiles.addAll(Arrays.asList(rulesDirFile.listFiles(filenameFilter)));
|
||||
|
||||
for(File ruleFile : rulesFiles) {
|
||||
testRule(ruleFile);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testAllRules() throws Exception {
|
||||
List<File> rulesFiles = allRules();
|
||||
|
||||
for(File rulesFile : rulesFiles) {
|
||||
testRule(rulesFile);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMatcherReplace() throws Exception {
|
||||
File rulesDirectory = getRulesDirectory();
|
||||
File rulesDirFile = new File(rulesDirectory, "geoanalytics-gos");
|
||||
File rulesFile = new File(rulesDirFile, "geoanalytics-gos-OTHER.json");
|
||||
|
||||
ObjectMapper mapper = DSMapper.getObjectMapper();
|
||||
MatcherReplace matcherReplace = mapper.readValue(rulesFile, MatcherReplace.class);
|
||||
|
||||
Replace replace = matcherReplace.check("geoanalytics","geoanalytics-gos-gos","/ShapeManagement/applyOnView");
|
||||
|
||||
logger.info("{}", replace);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -23,7 +23,7 @@ public class ValidTimeValidatorTest {
|
|||
@Test
|
||||
public void testClassLong() throws InvalidValueException{
|
||||
ValidLongValidator validTimeValidator = new ValidLongValidator();
|
||||
Long myLong = new Long(4);
|
||||
Long myLong = 4l;
|
||||
validTimeValidator.validate(null, myLong, null);
|
||||
}
|
||||
|
||||
|
|
|
@ -10,13 +10,13 @@ import java.io.IOException;
|
|||
import org.gcube.accounting.persistence.AccountingPersistenceFactory;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
import org.gcube.documentstore.records.RecordUtility;
|
||||
import org.gcube.testutility.ScopedTest;
|
||||
import org.gcube.testutility.ContextTest;
|
||||
import org.gcube.testutility.TestUsageRecord;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class FalbackTest extends ScopedTest {
|
||||
public class FalbackTest extends ContextTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(FalbackTest.class);
|
||||
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.testutility;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.gcube.common.authorization.client.exceptions.ObjectNotFound;
|
||||
import org.gcube.common.security.Owner;
|
||||
import org.gcube.common.security.secrets.GCubeSecret;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*
|
||||
*/
|
||||
public class ContextTest {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ContextTest.class);
|
||||
|
||||
protected static Properties properties;
|
||||
protected static final String PROPERTIES_FILENAME = "token.properties";
|
||||
|
||||
public static final String PARENT_DEFAULT_TEST_SCOPE;
|
||||
public static final String DEFAULT_TEST_SCOPE;
|
||||
public static final String ALTERNATIVE_TEST_SCOPE;
|
||||
|
||||
public static final String DEFAULT_TEST_SCOPE_ANOTHER_USER;
|
||||
|
||||
static {
|
||||
properties = new Properties();
|
||||
InputStream input = ContextTest.class.getClassLoader().getResourceAsStream(PROPERTIES_FILENAME);
|
||||
|
||||
try {
|
||||
// load the properties file
|
||||
properties.load(input);
|
||||
} catch(IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
// PARENT_DEFAULT_TEST_SCOPE = "/pred4s"
|
||||
// DEFAULT_TEST_SCOPE_NAME = PARENT_DEFAULT_TEST_SCOPE + "/preprod";
|
||||
// ALTERNATIVE_TEST_SCOPE = DEFAULT_TEST_SCOPE_NAME + "/preVRE";
|
||||
|
||||
|
||||
PARENT_DEFAULT_TEST_SCOPE = "/gcube";
|
||||
DEFAULT_TEST_SCOPE = PARENT_DEFAULT_TEST_SCOPE + "/devNext";
|
||||
ALTERNATIVE_TEST_SCOPE = DEFAULT_TEST_SCOPE + "/NextNext";
|
||||
|
||||
DEFAULT_TEST_SCOPE_ANOTHER_USER = "lucio.lelii_" + DEFAULT_TEST_SCOPE;
|
||||
|
||||
try {
|
||||
setContextByName(DEFAULT_TEST_SCOPE);
|
||||
} catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getCurrentScope(String token) throws ObjectNotFound, Exception {
|
||||
GCubeSecret secret = new GCubeSecret(token);
|
||||
String context = secret.getContext();
|
||||
logger.info("Context of token {} is {}", token, context);
|
||||
return context;
|
||||
}
|
||||
|
||||
public static void setContextByName(String fullContextName) throws ObjectNotFound, Exception {
|
||||
String token = ContextTest.properties.getProperty(fullContextName);
|
||||
setContext(token);
|
||||
}
|
||||
|
||||
private static void setContext(String token) throws ObjectNotFound, Exception {
|
||||
GCubeSecret secret = new GCubeSecret(token);
|
||||
Owner clientInfo = secret.getOwner();
|
||||
logger.debug("User : {} - external client? ok: {}", clientInfo.getId(), clientInfo.isExternalClient());
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void beforeClass() throws Exception {
|
||||
setContextByName(DEFAULT_TEST_SCOPE);
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void afterClass() throws Exception {
|
||||
}
|
||||
|
||||
}
|
|
@ -1,90 +0,0 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.testutility;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
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.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*
|
||||
*/
|
||||
public class ScopedTest {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ScopedTest.class);
|
||||
|
||||
protected static final String PROPERTIES_FILENAME = "token.properties";
|
||||
|
||||
private static final String GCUBE_DEVNEXT_VARNAME = "GCUBE_DEVNEXT";
|
||||
public static final String GCUBE_DEVNEXT;
|
||||
|
||||
private static final String GCUBE_DEVNEXT_NEXTNEXT_VARNAME = "GCUBE_DEVNEXT_NEXTNEXT";
|
||||
public static final String GCUBE_DEVNEXT_NEXTNEXT;
|
||||
|
||||
public static final String GCUBE_DEVSEC_VARNAME = "GCUBE_DEVSEC";
|
||||
public static final String GCUBE_DEVSEC;
|
||||
|
||||
public static final String GCUBE_DEVSEC_DEVVRE_VARNAME = "GCUBE_DEVSEC_DEVVRE";
|
||||
public static final String GCUBE_DEVSEC_DEVVRE;
|
||||
|
||||
public static final String DEFAULT_TEST_SCOPE;
|
||||
public static final String ALTERNATIVE_TEST_SCOPE;
|
||||
|
||||
static {
|
||||
Properties properties = new Properties();
|
||||
InputStream input = ScopedTest.class.getClassLoader().getResourceAsStream(PROPERTIES_FILENAME);
|
||||
|
||||
try {
|
||||
// load the properties file
|
||||
properties.load(input);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
GCUBE_DEVNEXT = properties.getProperty(GCUBE_DEVNEXT_VARNAME);
|
||||
GCUBE_DEVNEXT_NEXTNEXT = properties.getProperty(GCUBE_DEVNEXT_NEXTNEXT_VARNAME);
|
||||
|
||||
GCUBE_DEVSEC = properties.getProperty(GCUBE_DEVSEC_VARNAME);
|
||||
GCUBE_DEVSEC_DEVVRE = properties.getProperty(GCUBE_DEVSEC_DEVVRE_VARNAME);
|
||||
|
||||
DEFAULT_TEST_SCOPE = GCUBE_DEVNEXT;
|
||||
ALTERNATIVE_TEST_SCOPE = GCUBE_DEVSEC;
|
||||
}
|
||||
|
||||
public static String getCurrentScope(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;
|
||||
}
|
||||
|
||||
|
||||
public static void setContext(String token) throws ObjectNotFound, Exception{
|
||||
SecurityTokenProvider.instance.set(token);
|
||||
ScopeProvider.instance.set(getCurrentScope(token));
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void beforeClass() throws Exception{
|
||||
setContext(DEFAULT_TEST_SCOPE);
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void afterClass() throws Exception{
|
||||
SecurityTokenProvider.instance.reset();
|
||||
ScopeProvider.instance.reset();
|
||||
}
|
||||
|
||||
}
|
|
@ -8,7 +8,6 @@ import java.net.URISyntaxException;
|
|||
import java.util.UUID;
|
||||
|
||||
import org.gcube.accounting.datamodel.UsageRecord.OperationResult;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageStatusRecord;
|
||||
import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.JobUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.PortletUsageRecord;
|
||||
|
@ -95,7 +94,6 @@ public class TestUsageRecord {
|
|||
public final static String TEST_RESOUCE_OWNER = "resource.owner";
|
||||
public final static String TEST_RESOUCE_SCOPE = TEST_SCOPE;
|
||||
|
||||
public final static String TEST_RESOURCE_URI = "testprotocol://objectURI";
|
||||
public final static String TEST_PROVIDER_URI = "testprotocol://providerURI";
|
||||
|
||||
private final static long MIN_DATA_VOLUME = 1024;
|
||||
|
@ -112,9 +110,7 @@ public class TestUsageRecord {
|
|||
usageRecord.setOperationResult(TEST_OPERATION_RESULT);
|
||||
|
||||
usageRecord.setResourceOwner(TEST_RESOUCE_OWNER);
|
||||
usageRecord.setResourceScope(TEST_RESOUCE_SCOPE);
|
||||
|
||||
usageRecord.setResourceURI(new URI(TEST_RESOURCE_URI));
|
||||
usageRecord.setProviderURI(new URI(TEST_PROVIDER_URI));
|
||||
|
||||
usageRecord.setOperationType(AbstractStorageUsageRecord.OperationType.READ);
|
||||
|
@ -137,17 +133,15 @@ public class TestUsageRecord {
|
|||
* Create a valid #StorageVolumeUsageRecord with scope set automatically.
|
||||
* @return the created #StorageVolumeUsageRecord
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static StorageStatusRecord createTestStorageVolumeUsageRecord() {
|
||||
StorageStatusRecord usageRecord = new StorageStatusRecord();
|
||||
try {
|
||||
usageRecord.setConsumerId(TEST_CONSUMER_ID);
|
||||
usageRecord.setOperationResult(TEST_OPERATION_RESULT);
|
||||
usageRecord.setDataVolume(generateRandomLong(MIN_DATA_VOLUME, MAX_DATA_VOLUME));
|
||||
usageRecord.setDataType(AbstractStorageStatusRecord.DataType.STORAGE);
|
||||
usageRecord.setDataType(AbstractStorageUsageRecord.DataType.STORAGE);
|
||||
usageRecord.setDataCount(generateRandomLong(MIN_DATA_VOLUME, MAX_DATA_VOLUME));
|
||||
usageRecord.setDataServiceClass("dataServiceClass");
|
||||
usageRecord.setDataServiceName("dataServiceName");
|
||||
usageRecord.setDataServiceId("dataServiceId");
|
||||
usageRecord.setProviderId(new URI(TEST_PROVIDER_URI));
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
/token.properties
|
||||
/*.gcubekey
|
|
@ -2,17 +2,21 @@
|
|||
<!DOCTYPE xml>
|
||||
<configuration>
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0}: %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
|
||||
<logger name="org.gcube" level="TRACE" />
|
||||
<appender name="STDOUT"
|
||||
class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0}: %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<logger name="org.gcube" level="ERROR" />
|
||||
<!-- logger name="org.gcube.documentstore" level="INFO" / -->
|
||||
<!-- logger name="org.gcube.accounting" level="TRACE" / -->
|
||||
<!-- logger name="org.gcube.accounting.datamodel.validations.validators.Harmonizer" level="ERROR" /-->
|
||||
<logger name="org.gcube.accounting.datamodel.aggregation" level="TRACE" />
|
||||
|
||||
<root level="WARN">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</root>
|
||||
|
||||
<root level="WARN">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
|
@ -0,0 +1,2 @@
|
|||
DataAccess,3MConnector,gcube/service/connect
|
||||
DataAccess,3MConnector,/gcube/service/connect
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "DataAccess",
|
||||
"serviceNameRegex": "3MConnector",
|
||||
"calledMethodRegex": "^\/{0,1}gcube\/service\/connect.*"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataAccess",
|
||||
"serviceName": "3MConnector",
|
||||
"calledMethod": "connect"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
DataAccess,3MConnector,gcube/service/disconnect
|
||||
DataAccess,3MConnector,/gcube/service/disconnect
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "DataAccess",
|
||||
"serviceNameRegex": "3MConnector",
|
||||
"calledMethodRegex": "^\/{0,1}gcube\/service\/disconnect.*"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataAccess",
|
||||
"serviceName": "3MConnector",
|
||||
"calledMethod": "disconnect"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
DataAccess,ShareLatex,UNKNOWN
|
||||
DataAccess,SpeciesProductsDiscovery,UNKNOWN
|
||||
DataAnalysis,TabularData,UNKNOWN
|
||||
InformationSystem,ICProxy,UNKNOWN
|
||||
InformationSystem,IS-Collector,UNKNOWN
|
||||
InformationSystem,IS-Notifier,UNKNOWN
|
||||
InformationSystem,IS-Registry,UNKNOWN
|
||||
Portal,SocialNetworking,UNKNOWN
|
||||
ResourceManagement,FHNManager,UNKNOWN
|
||||
VREManagement,ResourceManager,UNKNOWN
|
||||
dataanalysis,dataminer-pool-manager,UNKNOWN
|
||||
WPS,DataMiner,UNKNOWN
|
||||
VREManagement,SmartExecutor,UNKNOWN
|
||||
VREManagement,smart-executor,UNKNOWN
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(?<ServiceClass>.*)",
|
||||
"serviceNameRegex": "(?<ServiceName>.*)",
|
||||
"calledMethodRegex": "UNKNOWN"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "${ServiceClass}",
|
||||
"serviceName": "${ServiceName}",
|
||||
"calledMethod": "OTHER"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,670 @@
|
|||
Common,AuthorizationService,gcube/service/generate/aconrad
|
||||
Common,AuthorizationService,gcube/service/generate/afalierou
|
||||
Common,AuthorizationService,gcube/service/generate/akarasimos
|
||||
Common,AuthorizationService,gcube/service/generate/alejandrocallara
|
||||
Common,AuthorizationService,gcube/service/generate/emsbach
|
||||
Common,AuthorizationService,gcube/service/generate/enrico.anello
|
||||
Common,AuthorizationService,gcube/service/generate/eric.foucher
|
||||
Common,AuthorizationService,gcube/service/generate/fabio.carrara90
|
||||
Common,AuthorizationService,gcube/service/generate/jacq.fabienne
|
||||
Common,AuthorizationService,gcube/service/generate/realgcp
|
||||
Common,AuthorizationService,gcube/service/generate/risse
|
||||
Common,AuthorizationService,gcube/service/generate/roberthuber
|
||||
Common,AuthorizationService,gcube/service/generate/roberto.cirillo
|
||||
Common,AuthorizationService,gcube/service/generate/4.facchini
|
||||
Common,AuthorizationService,gcube/service/generate/4tikhonov
|
||||
Common,AuthorizationService,gcube/service/generate/a.benmhamed
|
||||
Common,AuthorizationService,gcube/service/generate/a.ellenbroek
|
||||
Common,AuthorizationService,gcube/service/generate/a.muscella
|
||||
Common,AuthorizationService,gcube/service/generate/abhikjana1
|
||||
Common,AuthorizationService,gcube/service/generate/abu.shaheen
|
||||
Common,AuthorizationService,gcube/service/generate/achille
|
||||
Common,AuthorizationService,gcube/service/generate/acmilanfan
|
||||
Common,AuthorizationService,gcube/service/generate/acris
|
||||
Common,AuthorizationService,gcube/service/generate/adele
|
||||
Common,AuthorizationService,gcube/service/generate/adeline
|
||||
Common,AuthorizationService,gcube/service/generate/aikimoto
|
||||
Common,AuthorizationService,gcube/service/generate/alaimos
|
||||
Common,AuthorizationService,gcube/service/generate/ale.olivieri84
|
||||
Common,AuthorizationService,gcube/service/generate/ale.pulse
|
||||
Common,AuthorizationService,gcube/service/generate/cedber
|
||||
Common,AuthorizationService,gcube/service/generate/cfwelch
|
||||
Common,AuthorizationService,gcube/service/generate/emmanuel.blondel
|
||||
Common,AuthorizationService,gcube/service/generate/emostarda
|
||||
Common,AuthorizationService,gcube/service/generate/enrico.candino
|
||||
Common,AuthorizationService,gcube/service/generate/enrique
|
||||
Common,AuthorizationService,gcube/service/generate/eoghan.kelly
|
||||
Common,AuthorizationService,gcube/service/generate/epournaras
|
||||
Common,AuthorizationService,gcube/service/generate/eugenio
|
||||
Common,AuthorizationService,gcube/service/generate/f.ilievski
|
||||
Common,AuthorizationService,gcube/service/generate/fab.butini
|
||||
Common,AuthorizationService,gcube/service/generate/fabio.fiorellato
|
||||
Common,AuthorizationService,gcube/service/generate/fabio.saracco
|
||||
Common,AuthorizationService,gcube/service/generate/fabio.sinibaldi
|
||||
Common,AuthorizationService,gcube/service/generate/fabio2111
|
||||
Common,AuthorizationService,gcube/service/generate/ivano.dini
|
||||
Common,AuthorizationService,gcube/service/generate/j.duarteg
|
||||
Common,AuthorizationService,gcube/service/generate/jaanbi.jb
|
||||
Common,AuthorizationService,gcube/service/generate/jason.cope
|
||||
Common,AuthorizationService,gcube/service/generate/jdaen
|
||||
Common,AuthorizationService,gcube/service/generate/jean-noel.druon
|
||||
Common,AuthorizationService,gcube/service/generate/raularones
|
||||
Common,AuthorizationService,gcube/service/generate/rebecca.spinelli
|
||||
Common,AuthorizationService,gcube/service/generate/recon.hungary
|
||||
Common,AuthorizationService,gcube/service/generate/retos
|
||||
Common,AuthorizationService,gcube/service/generate/rinzivillo
|
||||
Common,AuthorizationService,gcube/service/generate/roanne.collins
|
||||
Common,AuthorizationService,gcube/service/generate/roar.nybo
|
||||
Common,AuthorizationService,gcube/service/generate/robert.lefebure
|
||||
Common,AuthorizationService,gcube/service/generate/roberta
|
||||
Common,AuthorizationService,gcube/service/generate/roberto.aquilano
|
||||
Common,AuthorizationService,gcube/service/generate/v.maffione
|
||||
Common,AuthorizationService,gcube/service/generate/alessandrachirivi
|
||||
Common,AuthorizationService,gcube/service/generate/alessandro.chessa
|
||||
Common,AuthorizationService,gcube/service/generate/alessandro.ciattaglia
|
||||
Common,AuthorizationService,gcube/service/generate/alessandro.pieve
|
||||
Common,AuthorizationService,gcube/service/generate/alessandro.suglia
|
||||
Common,AuthorizationService,gcube/service/generate/alessandro.tibo
|
||||
Common,AuthorizationService,gcube/service/generate/alessia.bardi
|
||||
Common,AuthorizationService,gcube/service/generate/alexander.richter
|
||||
Common,AuthorizationService,gcube/service/generate/alexandra.schwaab
|
||||
Common,AuthorizationService,gcube/service/generate/alexandre.morin
|
||||
Common,AuthorizationService,gcube/service/generate/alfred.sandstrom
|
||||
Common,AuthorizationService,gcube/service/generate/alina.sirbu
|
||||
Common,AuthorizationService,gcube/service/generate/am
|
||||
Common,AuthorizationService,gcube/service/generate/amir.menczel
|
||||
Common,AuthorizationService,gcube/service/generate/amishra
|
||||
Common,AuthorizationService,gcube/service/generate/amnocas
|
||||
Common,AuthorizationService,gcube/service/generate/anais.turpault.1
|
||||
Common,AuthorizationService,gcube/service/generate/anastasis
|
||||
Common,AuthorizationService,gcube/service/generate/andras
|
||||
Common,AuthorizationService,gcube/service/generate/andre.boustany
|
||||
Common,AuthorizationService,gcube/service/generate/andrea
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.dellamico
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.dessi
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.manieri
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.mannocci
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.manzi.1
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.marchetti
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.musco
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.pizzo
|
||||
Common,AuthorizationService,gcube/service/generate/andrea.rossi
|
||||
Common,AuthorizationService,gcube/service/generate/andreacimino
|
||||
Common,AuthorizationService,gcube/service/generate/andreaferracani
|
||||
Common,AuthorizationService,gcube/service/generate/andreas.bannach
|
||||
Common,AuthorizationService,gcube/service/generate/andrej.lapanje
|
||||
Common,AuthorizationService,gcube/service/generate/ankushjain3005
|
||||
Common,AuthorizationService,gcube/service/generate/anna
|
||||
Common,AuthorizationService,gcube/service/generate/anna.molino
|
||||
Common,AuthorizationService,gcube/service/generate/anna.pineau
|
||||
Common,AuthorizationService,gcube/service/generate/annamolino
|
||||
Common,AuthorizationService,gcube/service/generate/annarita.liburdi
|
||||
Common,AuthorizationService,gcube/service/generate/anne-lauscher
|
||||
Common,AuthorizationService,gcube/service/generate/anne.cooper
|
||||
Common,AuthorizationService,gcube/service/generate/anni.pauly
|
||||
Common,AuthorizationService,gcube/service/generate/antgers
|
||||
Common,AuthorizationService,gcube/service/generate/antoine.rougier
|
||||
Common,AuthorizationService,gcube/service/generate/anton.ellenbroek
|
||||
Common,AuthorizationService,gcube/service/generate/antonino.crivello
|
||||
Common,AuthorizationService,gcube/service/generate/antonio.gioia82
|
||||
Common,AuthorizationService,gcube/service/generate/antonio.maffia
|
||||
Common,AuthorizationService,gcube/service/generate/anupama6d
|
||||
Common,AuthorizationService,gcube/service/generate/arusso
|
||||
Common,AuthorizationService,gcube/service/generate/attardi
|
||||
Common,AuthorizationService,gcube/service/generate/attila.kreiter
|
||||
Common,AuthorizationService,gcube/service/generate/atzori
|
||||
Common,AuthorizationService,gcube/service/generate/aureliano.gentile
|
||||
Common,AuthorizationService,gcube/service/generate/aureliano.gentile.1
|
||||
Common,AuthorizationService,gcube/service/generate/aveti123
|
||||
Common,AuthorizationService,gcube/service/generate/avnispen
|
||||
Common,AuthorizationService,gcube/service/generate/aymen.charef
|
||||
Common,AuthorizationService,gcube/service/generate/b.crotti
|
||||
Common,AuthorizationService,gcube/service/generate/banski
|
||||
Common,AuthorizationService,gcube/service/generate/baoxu.shi
|
||||
Common,AuthorizationService,gcube/service/generate/baptiste.grenier
|
||||
Common,AuthorizationService,gcube/service/generate/barbara.furletti
|
||||
Common,AuthorizationService,gcube/service/generate/bartj
|
||||
Common,AuthorizationService,gcube/service/generate/bassobassista
|
||||
Common,AuthorizationService,gcube/service/generate/bastienmerigot
|
||||
Common,AuthorizationService,gcube/service/generate/baudouin.raoult
|
||||
Common,AuthorizationService,gcube/service/generate/benedetti.filippo
|
||||
Common,AuthorizationService,gcube/service/generate/benin80
|
||||
Common,AuthorizationService,gcube/service/generate/benlukepayne
|
||||
Common,AuthorizationService,gcube/service/generate/bfetahu
|
||||
Common,AuthorizationService,gcube/service/generate/bichen.shi
|
||||
Common,AuthorizationService,gcube/service/generate/bramvm
|
||||
Common,AuthorizationService,gcube/service/generate/brdar.sanja
|
||||
Common,AuthorizationService,gcube/service/generate/bruna.baldacci
|
||||
Common,AuthorizationService,gcube/service/generate/camara.arthur
|
||||
Common,AuthorizationService,gcube/service/generate/cardosolg15
|
||||
Common,AuthorizationService,gcube/service/generate/carlo.demedio
|
||||
Common,AuthorizationService,gcube/service/generate/carlo.meghini
|
||||
Common,AuthorizationService,gcube/service/generate/casper
|
||||
Common,AuthorizationService,gcube/service/generate/ch.dimitrakopoulos
|
||||
Common,AuthorizationService,gcube/service/generate/chabchoub.mohamed.ing
|
||||
Common,AuthorizationService,gcube/service/generate/chanikarn.yongstar
|
||||
Common,AuthorizationService,gcube/service/generate/chantel.wetzel
|
||||
Common,AuthorizationService,gcube/service/generate/charlesriondet
|
||||
Common,AuthorizationService,gcube/service/generate/chengtac
|
||||
Common,AuthorizationService,gcube/service/generate/chiara.cozzi87
|
||||
Common,AuthorizationService,gcube/service/generate/ching.villanueva
|
||||
Common,AuthorizationService,gcube/service/generate/chloe.guillerme18
|
||||
Common,AuthorizationService,gcube/service/generate/chris.lynam
|
||||
Common,AuthorizationService,gcube/service/generate/christophe.lett
|
||||
Common,AuthorizationService,gcube/service/generate/christoschatzimichail
|
||||
Common,AuthorizationService,gcube/service/generate/ciaran.kelly
|
||||
Common,AuthorizationService,gcube/service/generate/cinzia.luddi
|
||||
Common,AuthorizationService,gcube/service/generate/ciro.formisano
|
||||
Common,AuthorizationService,gcube/service/generate/claire.caralp
|
||||
Common,AuthorizationService,gcube/service/generate/clara.peron22
|
||||
Common,AuthorizationService,gcube/service/generate/claudio.atzori
|
||||
Common,AuthorizationService,gcube/service/generate/claudio.vairo
|
||||
Common,AuthorizationService,gcube/service/generate/cmspinto
|
||||
Common,AuthorizationService,gcube/service/generate/colica
|
||||
Common,AuthorizationService,gcube/service/generate/colin.millar
|
||||
Common,AuthorizationService,gcube/service/generate/congminh91
|
||||
Common,AuthorizationService,gcube/service/generate/costantino.perciante
|
||||
Common,AuthorizationService,gcube/service/generate/costantino8
|
||||
Common,AuthorizationService,gcube/service/generate/cp
|
||||
Common,AuthorizationService,gcube/service/generate/creverte
|
||||
Common,AuthorizationService,gcube/service/generate/cristina.muntean
|
||||
Common,AuthorizationService,gcube/service/generate/cristina.ribeiro
|
||||
Common,AuthorizationService,gcube/service/generate/csedayski
|
||||
Common,AuthorizationService,gcube/service/generate/d.bonciani
|
||||
Common,AuthorizationService,gcube/service/generate/d.rout
|
||||
Common,AuthorizationService,gcube/service/generate/dalvarez
|
||||
Common,AuthorizationService,gcube/service/generate/daniele.conversa
|
||||
Common,AuthorizationService,gcube/service/generate/daniele.regoli
|
||||
Common,AuthorizationService,gcube/service/generate/darkohric
|
||||
Common,AuthorizationService,gcube/service/generate/darpap
|
||||
Common,AuthorizationService,gcube/service/generate/david.richardson
|
||||
Common,AuthorizationService,gcube/service/generate/davidcurrie2001
|
||||
Common,AuthorizationService,gcube/service/generate/davide.gazze
|
||||
Common,AuthorizationService,gcube/service/generate/davide.madonna
|
||||
Common,AuthorizationService,gcube/service/generate/davordavidovic
|
||||
Common,AuthorizationService,gcube/service/generate/dddejean
|
||||
Common,AuthorizationService,gcube/service/generate/debbi.pedreschi
|
||||
Common,AuthorizationService,gcube/service/generate/deepqa
|
||||
Common,AuthorizationService,gcube/service/generate/denispyr
|
||||
Common,AuthorizationService,gcube/service/generate/diaabakkour
|
||||
Common,AuthorizationService,gcube/service/generate/diegoref
|
||||
Common,AuthorizationService,gcube/service/generate/dieuthule
|
||||
Common,AuthorizationService,gcube/service/generate/dkatris
|
||||
Common,AuthorizationService,gcube/service/generate/doertedk
|
||||
Common,AuthorizationService,gcube/service/generate/domvit
|
||||
Common,AuthorizationService,gcube/service/generate/donatella.castelli
|
||||
Common,AuthorizationService,gcube/service/generate/dorian.seillier
|
||||
Common,AuthorizationService,gcube/service/generate/dorothee.rebscher
|
||||
Common,AuthorizationService,gcube/service/generate/dostojic
|
||||
Common,AuthorizationService,gcube/service/generate/douwe.zeldenrust
|
||||
Common,AuthorizationService,gcube/service/generate/dpavia
|
||||
Common,AuthorizationService,gcube/service/generate/driad
|
||||
Common,AuthorizationService,gcube/service/generate/driad91
|
||||
Common,AuthorizationService,gcube/service/generate/driad91tagme1
|
||||
Common,AuthorizationService,gcube/service/generate/driad91tagme2
|
||||
Common,AuthorizationService,gcube/service/generate/driad91tagme3
|
||||
Common,AuthorizationService,gcube/service/generate/driad91tagme4
|
||||
Common,AuthorizationService,gcube/service/generate/driad91tagme5
|
||||
Common,AuthorizationService,gcube/service/generate/dzjowk
|
||||
Common,AuthorizationService,gcube/service/generate/e.f.ramezani
|
||||
Common,AuthorizationService,gcube/service/generate/e.nrico
|
||||
Common,AuthorizationService,gcube/service/generate/e.theodorakopoulos
|
||||
Common,AuthorizationService,gcube/service/generate/ecarrasco
|
||||
Common,AuthorizationService,gcube/service/generate/edi
|
||||
Common,AuthorizationService,gcube/service/generate/efer
|
||||
Common,AuthorizationService,gcube/service/generate/egoddard
|
||||
Common,AuthorizationService,gcube/service/generate/egouli
|
||||
Common,AuthorizationService,gcube/service/generate/ehudson
|
||||
Common,AuthorizationService,gcube/service/generate/elenipetra
|
||||
Common,AuthorizationService,gcube/service/generate/elibiel
|
||||
Common,AuthorizationService,gcube/service/generate/elsyjang
|
||||
Common,AuthorizationService,gcube/service/generate/elzi
|
||||
Common,AuthorizationService,gcube/service/generate/emghufran
|
||||
Common,AuthorizationService,gcube/service/generate/emilie
|
||||
Common,AuthorizationService,gcube/service/generate/emilio
|
||||
Common,AuthorizationService,gcube/service/generate/fabiocarlomolinari
|
||||
Common,AuthorizationService,gcube/service/generate/fede.fierli
|
||||
Common,AuthorizationService,gcube/service/generate/felix.cremer
|
||||
Common,AuthorizationService,gcube/service/generate/flavio.dimartino
|
||||
Common,AuthorizationService,gcube/service/generate/franca.debole
|
||||
Common,AuthorizationService,gcube/service/generate/francesca
|
||||
Common,AuthorizationService,gcube/service/generate/francesca.beni
|
||||
Common,AuthorizationService,gcube/service/generate/francesca.morselli
|
||||
Common,AuthorizationService,gcube/service/generate/francesca.pratesi
|
||||
Common,AuthorizationService,gcube/service/generate/francesco.cerasuolo
|
||||
Common,AuthorizationService,gcube/service/generate/francesco.mangiacrapa
|
||||
Common,AuthorizationService,gcube/service/generate/franco
|
||||
Common,AuthorizationService,gcube/service/generate/franco.zoppi
|
||||
Common,AuthorizationService,gcube/service/generate/francois.andre
|
||||
Common,AuthorizationService,gcube/service/generate/francois.guilhaumon
|
||||
Common,AuthorizationService,gcube/service/generate/franz.bender
|
||||
Common,AuthorizationService,gcube/service/generate/frippe12573
|
||||
Common,AuthorizationService,gcube/service/generate/fuqi.song
|
||||
Common,AuthorizationService,gcube/service/generate/fz.osheee
|
||||
Common,AuthorizationService,gcube/service/generate/g.gola
|
||||
Common,AuthorizationService,gcube/service/generate/g.magro
|
||||
Common,AuthorizationService,gcube/service/generate/g.serra94
|
||||
Common,AuthorizationService,gcube/service/generate/gabriele.giammatteo
|
||||
Common,AuthorizationService,gcube/service/generate/gantzoulatos
|
||||
Common,AuthorizationService,gcube/service/generate/gareth.burns
|
||||
Common,AuthorizationService,gcube/service/generate/gc.rodi
|
||||
Common,AuthorizationService,gcube/service/generate/gearmonkey
|
||||
Common,AuthorizationService,gcube/service/generate/george.kakaletris
|
||||
Common,AuthorizationService,gcube/service/generate/georgeb
|
||||
Common,AuthorizationService,gcube/service/generate/georgia
|
||||
Common,AuthorizationService,gcube/service/generate/gerhardgossen
|
||||
Common,AuthorizationService,gcube/service/generate/gerold.diepolder
|
||||
Common,AuthorizationService,gcube/service/generate/gfarantatos
|
||||
Common,AuthorizationService,gcube/service/generate/giacomo-chato.osio
|
||||
Common,AuthorizationService,gcube/service/generate/giammarinodomenico
|
||||
Common,AuthorizationService,gcube/service/generate/giancarlo.panichi
|
||||
Common,AuthorizationService,gcube/service/generate/giancarlo.riolo
|
||||
Common,AuthorizationService,gcube/service/generate/gianluca.diodato
|
||||
Common,AuthorizationService,gcube/service/generate/gianmarco.santini
|
||||
Common,AuthorizationService,gcube/service/generate/gianpaolo.coro
|
||||
Common,AuthorizationService,gcube/service/generate/giovanna.marino
|
||||
Common,AuthorizationService,gcube/service/generate/giulia.gorelli
|
||||
Common,AuthorizationService,gcube/service/generate/giulio.masetti
|
||||
Common,AuthorizationService,gcube/service/generate/giulio.rossetti
|
||||
Common,AuthorizationService,gcube/service/generate/giuseppe.demaio1982
|
||||
Common,AuthorizationService,gcube/service/generate/giusyandresini
|
||||
Common,AuthorizationService,gcube/service/generate/gmacho
|
||||
Common,AuthorizationService,gcube/service/generate/go
|
||||
Common,AuthorizationService,gcube/service/generate/gomez
|
||||
Common,AuthorizationService,gcube/service/generate/gorenikhilm
|
||||
Common,AuthorizationService,gcube/service/generate/graziella.pastore
|
||||
Common,AuthorizationService,gcube/service/generate/grenci
|
||||
Common,AuthorizationService,gcube/service/generate/guest.d4science
|
||||
Common,AuthorizationService,gcube/service/generate/guidotti
|
||||
Common,AuthorizationService,gcube/service/generate/guitton
|
||||
Common,AuthorizationService,gcube/service/generate/guntram.geser
|
||||
Common,AuthorizationService,gcube/service/generate/haakon.otteraa
|
||||
Common,AuthorizationService,gcube/service/generate/haenold
|
||||
Common,AuthorizationService,gcube/service/generate/hansmichael.hohenegger
|
||||
Common,AuthorizationService,gcube/service/generate/happymcflabs
|
||||
Common,AuthorizationService,gcube/service/generate/haritha
|
||||
Common,AuthorizationService,gcube/service/generate/hbuesing
|
||||
Common,AuthorizationService,gcube/service/generate/heiko.tjalsma
|
||||
Common,AuthorizationService,gcube/service/generate/hella
|
||||
Common,AuthorizationService,gcube/service/generate/henrikkn
|
||||
Common,AuthorizationService,gcube/service/generate/herve.demarcq
|
||||
Common,AuthorizationService,gcube/service/generate/hkatsiad
|
||||
Common,AuthorizationService,gcube/service/generate/hosseinfani
|
||||
Common,AuthorizationService,gcube/service/generate/hube
|
||||
Common,AuthorizationService,gcube/service/generate/hyaline0317
|
||||
Common,AuthorizationService,gcube/service/generate/i.galluccio
|
||||
Common,AuthorizationService,gcube/service/generate/i.roberts
|
||||
Common,AuthorizationService,gcube/service/generate/ikarkalakos
|
||||
Common,AuthorizationService,gcube/service/generate/ilaros
|
||||
Common,AuthorizationService,gcube/service/generate/illmk
|
||||
Common,AuthorizationService,gcube/service/generate/imoise
|
||||
Common,AuthorizationService,gcube/service/generate/imzilen.taha
|
||||
Common,AuthorizationService,gcube/service/generate/ingemar
|
||||
Common,AuthorizationService,gcube/service/generate/ingibj
|
||||
Common,AuthorizationService,gcube/service/generate/irlfisheriescontrol
|
||||
Common,AuthorizationService,gcube/service/generate/iryna.solodovnik
|
||||
Common,AuthorizationService,gcube/service/generate/ithasitis
|
||||
Common,AuthorizationService,gcube/service/generate/jeanjacquesmaguire
|
||||
Common,AuthorizationService,gcube/service/generate/jennifer.koritko
|
||||
Common,AuthorizationService,gcube/service/generate/jenniferedmond
|
||||
Common,AuthorizationService,gcube/service/generate/jeroen.cichy
|
||||
Common,AuthorizationService,gcube/service/generate/jessica.michel
|
||||
Common,AuthorizationService,gcube/service/generate/jhdez32
|
||||
Common,AuthorizationService,gcube/service/generate/jie.cao
|
||||
Common,AuthorizationService,gcube/service/generate/jim.berkson
|
||||
Common,AuthorizationService,gcube/service/generate/jlebras
|
||||
Common,AuthorizationService,gcube/service/generate/jniederau
|
||||
Common,AuthorizationService,gcube/service/generate/jo
|
||||
Common,AuthorizationService,gcube/service/generate/joao
|
||||
Common,AuthorizationService,gcube/service/generate/johann.petrak
|
||||
Common,AuthorizationService,gcube/service/generate/john.f.walter
|
||||
Common,AuthorizationService,gcube/service/generate/jon.helge.voelstad
|
||||
Common,AuthorizationService,gcube/service/generate/jonas.eberle
|
||||
Common,AuthorizationService,gcube/service/generate/jonasp
|
||||
Common,AuthorizationService,gcube/service/generate/jonhelge
|
||||
Common,AuthorizationService,gcube/service/generate/jopfeiff
|
||||
Common,AuthorizationService,gcube/service/generate/joseangelgomezlopez
|
||||
Common,AuthorizationService,gcube/service/generate/josef.weber
|
||||
Common,AuthorizationService,gcube/service/generate/jsadler2
|
||||
Common,AuthorizationService,gcube/service/generate/jsg
|
||||
Common,AuthorizationService,gcube/service/generate/jsteenbeek
|
||||
Common,AuthorizationService,gcube/service/generate/juan.gil
|
||||
Common,AuthorizationService,gcube/service/generate/juldebar
|
||||
Common,AuthorizationService,gcube/service/generate/jules.selles
|
||||
Common,AuthorizationService,gcube/service/generate/julia.calderwood
|
||||
Common,AuthorizationService,gcube/service/generate/julia.welter
|
||||
Common,AuthorizationService,gcube/service/generate/julien.barde
|
||||
Common,AuthorizationService,gcube/service/generate/k.akchouch
|
||||
Common,AuthorizationService,gcube/service/generate/k.giannakelos
|
||||
Common,AuthorizationService,gcube/service/generate/k.seferis
|
||||
Common,AuthorizationService,gcube/service/generate/k.verbrugge
|
||||
Common,AuthorizationService,gcube/service/generate/kadji.okou
|
||||
Common,AuthorizationService,gcube/service/generate/kaja.czajkowska15
|
||||
Common,AuthorizationService,gcube/service/generate/kandrews
|
||||
Common,AuthorizationService,gcube/service/generate/karolina.reducha
|
||||
Common,AuthorizationService,gcube/service/generate/katerina.papadaki
|
||||
Common,AuthorizationService,gcube/service/generate/katrin.kieling
|
||||
Common,AuthorizationService,gcube/service/generate/kbbe4life
|
||||
Common,AuthorizationService,gcube/service/generate/kees.waterman
|
||||
Common,AuthorizationService,gcube/service/generate/kevin.j.mccarthy
|
||||
Common,AuthorizationService,gcube/service/generate/khan.bill
|
||||
Common,AuthorizationService,gcube/service/generate/kiran.viparthi
|
||||
Common,AuthorizationService,gcube/service/generate/kmihalopoulos
|
||||
Common,AuthorizationService,gcube/service/generate/kmok93
|
||||
Common,AuthorizationService,gcube/service/generate/kojo
|
||||
Common,AuthorizationService,gcube/service/generate/konsolak
|
||||
Common,AuthorizationService,gcube/service/generate/kostas.kakaletris
|
||||
Common,AuthorizationService,gcube/service/generate/kostashirikakis
|
||||
Common,AuthorizationService,gcube/service/generate/kotu
|
||||
Common,AuthorizationService,gcube/service/generate/koubbi
|
||||
Common,AuthorizationService,gcube/service/generate/kristiinahommik
|
||||
Common,AuthorizationService,gcube/service/generate/kstef
|
||||
Common,AuthorizationService,gcube/service/generate/kulkabarb
|
||||
Common,AuthorizationService,gcube/service/generate/laepke
|
||||
Common,AuthorizationService,gcube/service/generate/lailloud
|
||||
Common,AuthorizationService,gcube/service/generate/lalalarudisha
|
||||
Common,AuthorizationService,gcube/service/generate/lambrosio66
|
||||
Common,AuthorizationService,gcube/service/generate/largesi
|
||||
Common,AuthorizationService,gcube/service/generate/laurafonbo
|
||||
Common,AuthorizationService,gcube/service/generate/laurent.romary
|
||||
Common,AuthorizationService,gcube/service/generate/lena.schreiter
|
||||
Common,AuthorizationService,gcube/service/generate/leneoffersgaard
|
||||
Common,AuthorizationService,gcube/service/generate/leonardo.candela
|
||||
Common,AuthorizationService,gcube/service/generate/leonardo.candela.1
|
||||
Common,AuthorizationService,gcube/service/generate/levi.westerveld
|
||||
Common,AuthorizationService,gcube/service/generate/leyre.goti
|
||||
Common,AuthorizationService,gcube/service/generate/libohan
|
||||
Common,AuthorizationService,gcube/service/generate/lina
|
||||
Common,AuthorizationService,gcube/service/generate/lise.cronne
|
||||
Common,AuthorizationService,gcube/service/generate/lishchuk
|
||||
Common,AuthorizationService,gcube/service/generate/lixiaolimail1
|
||||
Common,AuthorizationService,gcube/service/generate/liz.brooks
|
||||
Common,AuthorizationService,gcube/service/generate/loic.lefoll
|
||||
Common,AuthorizationService,gcube/service/generate/loisg9
|
||||
Common,AuthorizationService,gcube/service/generate/loredana.versienti
|
||||
Common,AuthorizationService,gcube/service/generate/lorenzo.gabrielli
|
||||
Common,AuthorizationService,gcube/service/generate/luca.frosini
|
||||
Common,AuthorizationService,gcube/service/generate/luca.pilato
|
||||
Common,AuthorizationService,gcube/service/generate/luca.sarti
|
||||
Common,AuthorizationService,gcube/service/generate/lucafrosini
|
||||
Common,AuthorizationService,gcube/service/generate/lucapappalardo1984
|
||||
Common,AuthorizationService,gcube/service/generate/lucio.lelii
|
||||
Common,AuthorizationService,gcube/service/generate/lucy.bastin
|
||||
Common,AuthorizationService,gcube/service/generate/lvlijun1992
|
||||
Common,AuthorizationService,gcube/service/generate/m.assante
|
||||
Common,AuthorizationService,gcube/service/generate/m.laurenzi
|
||||
Common,AuthorizationService,gcube/service/generate/m.pennisi
|
||||
Common,AuthorizationService,gcube/service/generate/m.scarpellini
|
||||
Common,AuthorizationService,gcube/service/generate/m.tanzifi
|
||||
Common,AuthorizationService,gcube/service/generate/maciej.ogrodniczuk
|
||||
Common,AuthorizationService,gcube/service/generate/magliozzi
|
||||
Common,AuthorizationService,gcube/service/generate/maiken.bjorkan
|
||||
Common,AuthorizationService,gcube/service/generate/manu
|
||||
Common,AuthorizationService,gcube/service/generate/manuela.degiorgi
|
||||
Common,AuthorizationService,gcube/service/generate/manuele.simi.1
|
||||
Common,AuthorizationService,gcube/service/generate/manugoacolou
|
||||
Common,AuthorizationService,gcube/service/generate/marc.kemps.snijders
|
||||
Common,AuthorizationService,gcube/service/generate/marc.taconet
|
||||
Common,AuthorizationService,gcube/service/generate/marc.taylor
|
||||
Common,AuthorizationService,gcube/service/generate/marco.barsacchi
|
||||
Common,AuthorizationService,gcube/service/generate/marco.brandizi
|
||||
Common,AuthorizationService,gcube/service/generate/marcocornolti
|
||||
Common,AuthorizationService,gcube/service/generate/mardones.mauricio
|
||||
Common,AuthorizationService,gcube/service/generate/margaridahermida
|
||||
Common,AuthorizationService,gcube/service/generate/margarita.rincon
|
||||
Common,AuthorizationService,gcube/service/generate/margheritasidoti
|
||||
Common,AuthorizationService,gcube/service/generate/mariaantonietta.digirolamo
|
||||
Common,AuthorizationService,gcube/service/generate/mariadigirolamo
|
||||
Common,AuthorizationService,gcube/service/generate/marie.puren
|
||||
Common,AuthorizationService,gcube/service/generate/mark.hedges
|
||||
Common,AuthorizationService,gcube/service/generate/mark.luckins
|
||||
Common,AuthorizationService,gcube/service/generate/marlon.dumas
|
||||
Common,AuthorizationService,gcube/service/generate/martacastillejo
|
||||
Common,AuthorizationService,gcube/service/generate/martacat90
|
||||
Common,AuthorizationService,gcube/service/generate/martina.bocci.1
|
||||
Common,AuthorizationService,gcube/service/generate/marycchristman
|
||||
Common,AuthorizationService,gcube/service/generate/marzia.piron
|
||||
Common,AuthorizationService,gcube/service/generate/massi.tempadmin
|
||||
Common,AuthorizationService,gcube/service/generate/massimiliano
|
||||
Common,AuthorizationService,gcube/service/generate/massimiliano.assante
|
||||
Common,AuthorizationService,gcube/service/generate/massimo.coppola
|
||||
Common,AuthorizationService,gcube/service/generate/massimo.luchini
|
||||
Common,AuthorizationService,gcube/service/generate/masterromaeo
|
||||
Common,AuthorizationService,gcube/service/generate/mat.amadei
|
||||
Common,AuthorizationService,gcube/service/generate/matej
|
||||
Common,AuthorizationService,gcube/service/generate/math
|
||||
Common,AuthorizationService,gcube/service/generate/matteo.corvi
|
||||
Common,AuthorizationService,gcube/service/generate/matteo.razzanelli
|
||||
Common,AuthorizationService,gcube/service/generate/matteolorenzini
|
||||
Common,AuthorizationService,gcube/service/generate/matthias.obst
|
||||
Common,AuthorizationService,gcube/service/generate/mattia.campana
|
||||
Common,AuthorizationService,gcube/service/generate/mauricio.mardones
|
||||
Common,AuthorizationService,gcube/service/generate/mauricio.marrone
|
||||
Common,AuthorizationService,gcube/service/generate/maurizio.delmonte
|
||||
Common,AuthorizationService,gcube/service/generate/maurizio.sanesi
|
||||
Common,AuthorizationService,gcube/service/generate/maurizio.tesconi
|
||||
Common,AuthorizationService,gcube/service/generate/max.fried
|
||||
Common,AuthorizationService,gcube/service/generate/mcgener
|
||||
Common,AuthorizationService,gcube/service/generate/me
|
||||
Common,AuthorizationService,gcube/service/generate/mecmiller
|
||||
Common,AuthorizationService,gcube/service/generate/mettem
|
||||
Common,AuthorizationService,gcube/service/generate/mggraziano
|
||||
Common,AuthorizationService,gcube/service/generate/mgoacolou
|
||||
Common,AuthorizationService,gcube/service/generate/michael.mathioudakis
|
||||
Common,AuthorizationService,gcube/service/generate/michael.musyl
|
||||
Common,AuthorizationService,gcube/service/generate/micheljess
|
||||
Common,AuthorizationService,gcube/service/generate/mike
|
||||
Common,AuthorizationService,gcube/service/generate/mike.ojo
|
||||
Common,AuthorizationService,gcube/service/generate/mike.priddy
|
||||
Common,AuthorizationService,gcube/service/generate/miles
|
||||
Common,AuthorizationService,gcube/service/generate/mincera
|
||||
Common,AuthorizationService,gcube/service/generate/mister.blonde
|
||||
Common,AuthorizationService,gcube/service/generate/mister.blue
|
||||
Common,AuthorizationService,gcube/service/generate/mister.brown
|
||||
Common,AuthorizationService,gcube/service/generate/mister.pink
|
||||
Common,AuthorizationService,gcube/service/generate/mister.white
|
||||
Common,AuthorizationService,gcube/service/generate/misv
|
||||
Common,AuthorizationService,gcube/service/generate/mmel
|
||||
Common,AuthorizationService,gcube/service/generate/mmfernandez
|
||||
Common,AuthorizationService,gcube/service/generate/mnikolopoulos
|
||||
Common,AuthorizationService,gcube/service/generate/mocamircea
|
||||
Common,AuthorizationService,gcube/service/generate/mohamed.khemakhem
|
||||
Common,AuthorizationService,gcube/service/generate/molly.lutcavage
|
||||
Common,AuthorizationService,gcube/service/generate/monique.simier
|
||||
Common,AuthorizationService,gcube/service/generate/montegrossi
|
||||
Common,AuthorizationService,gcube/service/generate/morten.roed
|
||||
Common,AuthorizationService,gcube/service/generate/motra
|
||||
Common,AuthorizationService,gcube/service/generate/mthompson
|
||||
Common,AuthorizationService,gcube/service/generate/musthafa.m1996
|
||||
Common,AuthorizationService,gcube/service/generate/mvalternativo
|
||||
Common,AuthorizationService,gcube/service/generate/nadia
|
||||
Common,AuthorizationService,gcube/service/generate/nancie.cummings
|
||||
Common,AuthorizationService,gcube/service/generate/nanni.federico
|
||||
Common,AuthorizationService,gcube/service/generate/robertoscopigno
|
||||
Common,AuthorizationService,gcube/service/generate/natalia.andrienko
|
||||
Common,AuthorizationService,gcube/service/generate/nathan.vaughan1
|
||||
Common,AuthorizationService,gcube/service/generate/naz
|
||||
Common,AuthorizationService,gcube/service/generate/nicola.aloia
|
||||
Common,AuthorizationService,gcube/service/generate/nicola.walker
|
||||
Common,AuthorizationService,gcube/service/generate/nicolas.bailly
|
||||
Common,AuthorizationService,gcube/service/generate/nicolas.bez
|
||||
Common,AuthorizationService,gcube/service/generate/nikolas.laskaris
|
||||
Common,AuthorizationService,gcube/service/generate/nikos.minadakis
|
||||
Common,AuthorizationService,gcube/service/generate/nils.oesterling
|
||||
Common,AuthorizationService,gcube/service/generate/nino.antulov
|
||||
Common,AuthorizationService,gcube/service/generate/nithya.selvaraju
|
||||
Common,AuthorizationService,gcube/service/generate/nlarrousse
|
||||
Common,AuthorizationService,gcube/service/generate/nlongepe
|
||||
Common,AuthorizationService,gcube/service/generate/nloxou
|
||||
Common,AuthorizationService,gcube/service/generate/norbert.billet
|
||||
Common,AuthorizationService,gcube/service/generate/ntran
|
||||
Common,AuthorizationService,gcube/service/generate/nunzioandreagalante
|
||||
Common,AuthorizationService,gcube/service/generate/o.renda
|
||||
Common,AuthorizationService,gcube/service/generate/oceandtm
|
||||
Common,AuthorizationService,gcube/service/generate/oluyemisi.oloruntuyi
|
||||
Common,AuthorizationService,gcube/service/generate/ondine.cornubert
|
||||
Common,AuthorizationService,gcube/service/generate/osidirop
|
||||
Common,AuthorizationService,gcube/service/generate/oyvind.stamnes
|
||||
Common,AuthorizationService,gcube/service/generate/ozhyhinas
|
||||
Common,AuthorizationService,gcube/service/generate/pabloruizfabo
|
||||
Common,AuthorizationService,gcube/service/generate/panagiota.koltsida
|
||||
Common,AuthorizationService,gcube/service/generate/pangjingwen0422
|
||||
Common,AuthorizationService,gcube/service/generate/paolo
|
||||
Common,AuthorizationService,gcube/service/generate/paolo.cintia
|
||||
Common,AuthorizationService,gcube/service/generate/paolo.fabriani
|
||||
Common,AuthorizationService,gcube/service/generate/paolo.manghi
|
||||
Common,AuthorizationService,gcube/service/generate/paolof
|
||||
Common,AuthorizationService,gcube/service/generate/parklize
|
||||
Common,AuthorizationService,gcube/service/generate/parrotola
|
||||
Common,AuthorizationService,gcube/service/generate/pasquale.pagano
|
||||
Common,AuthorizationService,gcube/service/generate/patricia.reglero
|
||||
Common,AuthorizationService,gcube/service/generate/patrick.philipp
|
||||
Common,AuthorizationService,gcube/service/generate/paul
|
||||
Common,AuthorizationService,gcube/service/generate/paulahmedley
|
||||
Common,AuthorizationService,gcube/service/generate/paulalee39
|
||||
Common,AuthorizationService,gcube/service/generate/paultaconet
|
||||
Common,AuthorizationService,gcube/service/generate/pekka.jounela
|
||||
Common,AuthorizationService,gcube/service/generate/pengyang823
|
||||
Common,AuthorizationService,gcube/service/generate/peruzzo
|
||||
Common,AuthorizationService,gcube/service/generate/petrad
|
||||
Common,AuthorizationService,gcube/service/generate/petralinks
|
||||
Common,AuthorizationService,gcube/service/generate/pfonseca
|
||||
Common,AuthorizationService,gcube/service/generate/phil
|
||||
Common,AuthorizationService,gcube/service/generate/philipp.kieninger
|
||||
Common,AuthorizationService,gcube/service/generate/philippe.bryere
|
||||
Common,AuthorizationService,gcube/service/generate/pierpaolo.petriccione
|
||||
Common,AuthorizationService,gcube/service/generate/pierre-francois.baisnee
|
||||
Common,AuthorizationService,gcube/service/generate/pino.vaccaro
|
||||
Common,AuthorizationService,gcube/service/generate/pitityy56
|
||||
Common,AuthorizationService,gcube/service/generate/plino
|
||||
Common,AuthorizationService,gcube/service/generate/ppbeto94
|
||||
Common,AuthorizationService,gcube/service/generate/proccaserra
|
||||
Common,AuthorizationService,gcube/service/generate/pronzino
|
||||
Common,AuthorizationService,gcube/service/generate/prory
|
||||
Common,AuthorizationService,gcube/service/generate/psiozos
|
||||
Common,AuthorizationService,gcube/service/generate/qasem
|
||||
Common,AuthorizationService,gcube/service/generate/qicongc
|
||||
Common,AuthorizationService,gcube/service/generate/quanap5
|
||||
Common,AuthorizationService,gcube/service/generate/r.l.p.mahieu
|
||||
Common,AuthorizationService,gcube/service/generate/r.pechnig
|
||||
Common,AuthorizationService,gcube/service/generate/rafik.zarrad
|
||||
Common,AuthorizationService,gcube/service/generate/rahul.bhambri
|
||||
Common,AuthorizationService,gcube/service/generate/rahult
|
||||
Common,AuthorizationService,gcube/service/generate/rocio.suarez-jimenez
|
||||
Common,AuthorizationService,gcube/service/generate/roeder
|
||||
Common,AuthorizationService,gcube/service/generate/roojan63
|
||||
Common,AuthorizationService,gcube/service/generate/rtanzifi
|
||||
Common,AuthorizationService,gcube/service/generate/rtanzifi.1
|
||||
Common,AuthorizationService,gcube/service/generate/rtl00
|
||||
Common,AuthorizationService,gcube/service/generate/rtrasarti
|
||||
Common,AuthorizationService,gcube/service/generate/ruey-cheng.chen
|
||||
Common,AuthorizationService,gcube/service/generate/ruggero.bertani
|
||||
Common,AuthorizationService,gcube/service/generate/ruggieri
|
||||
Common,AuthorizationService,gcube/service/generate/ruth.fernandez
|
||||
Common,AuthorizationService,gcube/service/generate/s.hamid.sajjadi
|
||||
Common,AuthorizationService,gcube/service/generate/sam.ed.leon
|
||||
Common,AuthorizationService,gcube/service/generate/sandra.scalari
|
||||
Common,AuthorizationService,gcube/service/generate/sandro.labruzzo
|
||||
Common,AuthorizationService,gcube/service/generate/sara-jane.moore
|
||||
Common,AuthorizationService,gcube/service/generate/sara.digiorgio
|
||||
Common,AuthorizationService,gcube/service/generate/sara.garavelli
|
||||
Common,AuthorizationService,gcube/service/generate/saran
|
||||
Common,AuthorizationService,gcube/service/generate/sariah.mghames
|
||||
Common,AuthorizationService,gcube/service/generate/sbellani
|
||||
Common,AuthorizationService,gcube/service/generate/scaiella
|
||||
Common,AuthorizationService,gcube/service/generate/scarponi
|
||||
Common,AuthorizationService,gcube/service/generate/scipioni.michele
|
||||
Common,AuthorizationService,gcube/service/generate/sdrude
|
||||
Common,AuthorizationService,gcube/service/generate/selenia.ghio
|
||||
Common,AuthorizationService,gcube/service/generate/sergio.oramas
|
||||
Common,AuthorizationService,gcube/service/generate/sergio.palumbo
|
||||
Common,AuthorizationService,gcube/service/generate/sfirdaus
|
||||
Common,AuthorizationService,gcube/service/generate/sganoti
|
||||
Common,AuthorizationService,gcube/service/generate/shaaf
|
||||
Common,AuthorizationService,gcube/service/generate/shashikdmn
|
||||
Common,AuthorizationService,gcube/service/generate/sheenab
|
||||
Common,AuthorizationService,gcube/service/generate/sigbjorn.kolberg
|
||||
Common,AuthorizationService,gcube/service/generate/silvia.agnoletti
|
||||
Common,AuthorizationService,gcube/service/generate/simon
|
||||
Common,AuthorizationService,gcube/service/generate/simon.fischer
|
||||
Common,AuthorizationService,gcube/service/generate/simone.bertoli
|
||||
Common,AuthorizationService,gcube/service/generate/simonetta.ciuffi
|
||||
Common,AuthorizationService,gcube/service/generate/sing2370
|
||||
Common,AuthorizationService,gcube/service/generate/sirianapaonessa
|
||||
Common,AuthorizationService,gcube/service/generate/sjuli
|
||||
Common,AuthorizationService,gcube/service/generate/sofie.vandemaele
|
||||
Common,AuthorizationService,gcube/service/generate/somass
|
||||
Common,AuthorizationService,gcube/service/generate/spiecker
|
||||
Common,AuthorizationService,gcube/service/generate/spn1
|
||||
Common,AuthorizationService,gcube/service/generate/spouyllau
|
||||
Common,AuthorizationService,gcube/service/generate/statistical.manager
|
||||
Common,AuthorizationService,gcube/service/generate/stefano.aringhieri
|
||||
Common,AuthorizationService,gcube/service/generate/stefano.cresci
|
||||
Common,AuthorizationService,gcube/service/generate/stefanosbarbati
|
||||
Common,AuthorizationService,gcube/service/generate/steve.nelson.48
|
||||
Common,AuthorizationService,gcube/service/generate/steve.williams
|
||||
Common,AuthorizationService,gcube/service/generate/stkak
|
||||
Common,AuthorizationService,gcube/service/generate/sum1kawa.pregc
|
||||
Common,AuthorizationService,gcube/service/generate/suntan
|
||||
Common,AuthorizationService,gcube/service/generate/sven.kluge
|
||||
Common,AuthorizationService,gcube/service/generate/swilliams
|
||||
Common,AuthorizationService,gcube/service/generate/sylvain.bonhommeau
|
||||
Common,AuthorizationService,gcube/service/generate/t.miethe
|
||||
Common,AuthorizationService,gcube/service/generate/tagtuna
|
||||
Common,AuthorizationService,gcube/service/generate/taha.imzilen
|
||||
Common,AuthorizationService,gcube/service/generate/tecnico
|
||||
Common,AuthorizationService,gcube/service/generate/terhi
|
||||
Common,AuthorizationService,gcube/service/generate/testpop
|
||||
Common,AuthorizationService,gcube/service/generate/thorsten.may
|
||||
Common,AuthorizationService,gcube/service/generate/thorwart
|
||||
Common,AuthorizationService,gcube/service/generate/tibor.kalman
|
||||
Common,AuthorizationService,gcube/service/generate/tim.jones
|
||||
Common,AuthorizationService,gcube/service/generate/tiziana.cantarelli
|
||||
Common,AuthorizationService,gcube/service/generate/tiziana.scarselli
|
||||
Common,AuthorizationService,gcube/service/generate/tiziano.squartini
|
||||
Common,AuthorizationService,gcube/service/generate/tom.d4science
|
||||
Common,AuthorizationService,gcube/service/generate/tom.skarning
|
||||
Common,AuthorizationService,gcube/service/generate/tomi.jusri
|
||||
Common,AuthorizationService,gcube/service/generate/tommaso.piccioli
|
||||
Common,AuthorizationService,gcube/service/generate/tonyt
|
||||
Common,AuthorizationService,gcube/service/generate/tristan.rouyer
|
||||
Common,AuthorizationService,gcube/service/generate/ttolin
|
||||
Common,AuthorizationService,gcube/service/generate/ttrippel
|
||||
Common,AuthorizationService,gcube/service/generate/ucdxf
|
||||
Common,AuthorizationService,gcube/service/generate/user.704788525
|
||||
Common,AuthorizationService,gcube/service/generate/utente1988
|
||||
Common,AuthorizationService,gcube/service/generate/valentijn.gilissen
|
||||
Common,AuthorizationService,gcube/service/generate/valentina.marioli
|
||||
Common,AuthorizationService,gcube/service/generate/valerio.arnaboldi
|
||||
Common,AuthorizationService,gcube/service/generate/valerio.bartolino
|
||||
Common,AuthorizationService,gcube/service/generate/valerio.basile
|
||||
Common,AuthorizationService,gcube/service/generate/veronica.boarotto
|
||||
Common,AuthorizationService,gcube/service/generate/vfloros
|
||||
Common,AuthorizationService,gcube/service/generate/vgravez
|
||||
Common,AuthorizationService,gcube/service/generate/vgrossi
|
||||
Common,AuthorizationService,gcube/service/generate/vickyg
|
||||
Common,AuthorizationService,gcube/service/generate/vincenzo.bacarella
|
||||
Common,AuthorizationService,gcube/service/generate/viola.bachini
|
||||
Common,AuthorizationService,gcube/service/generate/vishalbhave
|
||||
Common,AuthorizationService,gcube/service/generate/vishrawa
|
||||
Common,AuthorizationService,gcube/service/generate/vittorio
|
||||
Common,AuthorizationService,gcube/service/generate/warda
|
||||
Common,AuthorizationService,gcube/service/generate/whitefacedhaggardgrin
|
||||
Common,AuthorizationService,gcube/service/generate/wiebelitz
|
||||
Common,AuthorizationService,gcube/service/generate/wmcclin
|
||||
Common,AuthorizationService,gcube/service/generate/wrabbel
|
||||
Common,AuthorizationService,gcube/service/generate/wuke1993
|
||||
Common,AuthorizationService,gcube/service/generate/wwices
|
||||
Common,AuthorizationService,gcube/service/generate/xavier.favory
|
||||
Common,AuthorizationService,gcube/service/generate/xuqiongkai
|
||||
Common,AuthorizationService,gcube/service/generate/yann.laurent
|
||||
Common,AuthorizationService,gcube/service/generate/yannis.marketakis
|
||||
Common,AuthorizationService,gcube/service/generate/yannis.tzitzikas
|
||||
Common,AuthorizationService,gcube/service/generate/ydjong
|
||||
Common,AuthorizationService,gcube/service/generate/yerko.yutronich
|
||||
Common,AuthorizationService,gcube/service/generate/yin.chen
|
||||
Common,AuthorizationService,gcube/service/generate/yorgos
|
||||
Common,AuthorizationService,gcube/service/generate/ysjtcq
|
||||
Common,AuthorizationService,gcube/service/generate/zarate
|
||||
Common,AuthorizationService,gcube/service/generate/zeynep.pekcan.hekim
|
||||
Common,AuthorizationService,gcube/service/generate/zhang.ym
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "Common",
|
||||
"serviceNameRegex": "AuthorizationService",
|
||||
"calledMethodRegex": "^/{0,1}gcube/service/generate.*"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "Common",
|
||||
"serviceName": "AuthorizationService",
|
||||
"calledMethod": "generate"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
Common,AuthorizationService,gcube/service/retrieve/introd8
|
||||
Common,AuthorizationService,gcube/service/retrieve/jennifer8marzo
|
||||
Common,AuthorizationService,gcube/service/retrieve/lipari2013
|
||||
Common,AuthorizationService,gcube/service/retrieve/masterbigdata
|
||||
Common,AuthorizationService,gcube/service/retrieve/master2015
|
||||
Common,AuthorizationService,gcube/service/retrieve/
|
||||
Common,AuthorizationService,gcube/service/retrieve/!Simba2Nala
|
||||
Common,AuthorizationService,gcube/service/retrieve/'{UUID_TO_REPLACE}'
|
||||
Common,AuthorizationService,gcube/service/retrieve/123QWA7dc8377b
|
||||
Common,AuthorizationService,gcube/service/retrieve/129511051
|
||||
Common,AuthorizationService,gcube/service/retrieve/147bbd8a-9831-4544-8017-7dc60ad9
|
||||
Common,AuthorizationService,gcube/service/retrieve/20xSz16AABBzwQsa
|
||||
Common,AuthorizationService,gcube/service/retrieve/3119yasu
|
||||
Common,AuthorizationService,gcube/service/retrieve/401110377bbbaaa
|
||||
Common,AuthorizationService,gcube/service/retrieve/4218481
|
||||
Common,AuthorizationService,gcube/service/retrieve/454388ab362a716acb8201077dc8377b
|
||||
Common,AuthorizationService,gcube/service/retrieve/8020b57e2d41b6041c4fd06937acbec7
|
||||
Common,AuthorizationService,gcube/service/retrieve/81aca
|
||||
Common,AuthorizationService,gcube/service/retrieve/8e1e4b21e4fa3bd636a43c14dcfd6b19
|
||||
Common,AuthorizationService,gcube/service/retrieve/<masterbigdata>
|
||||
Common,AuthorizationService,gcube/service/retrieve/<tua
|
||||
Common,AuthorizationService,gcube/service/retrieve/<{UUID_TO_REPLACE}>
|
||||
Common,AuthorizationService,gcube/service/retrieve/={UUID_TO_REPLACE}
|
||||
Common,AuthorizationService,gcube/service/retrieve/CEhmqGuilS
|
||||
Common,AuthorizationService,gcube/service/retrieve/Florenzi
|
||||
Common,AuthorizationService,gcube/service/retrieve/Js1106004817
|
||||
Common,AuthorizationService,gcube/service/retrieve/MDibub1549
|
||||
Common,AuthorizationService,gcube/service/retrieve/MY_TAGME_KEY
|
||||
Common,AuthorizationService,gcube/service/retrieve/QA91EMslzwQsa
|
||||
Common,AuthorizationService,gcube/service/retrieve/Snadiaf27
|
||||
Common,AuthorizationService,gcube/service/retrieve/XXXX
|
||||
Common,AuthorizationService,gcube/service/retrieve/XXXXXXXXXXXXXXX
|
||||
Common,AuthorizationService,gcube/service/retrieve/XXXYZ231064LoabQPABTEX
|
||||
Common,AuthorizationService,gcube/service/retrieve/\\\\\\\\125d6a78fa1b4a0c89e5cc488487d134\\\\\\\\
|
||||
Common,AuthorizationService,gcube/service/retrieve/\\\\\\\\{UUID_TO_REPLACE}\\\\\\\\
|
||||
Common,AuthorizationService,gcube/service/retrieve/\\{UUID_TO_REPLACE}
|
||||
Common,AuthorizationService,gcube/service/retrieve/abc9000
|
||||
Common,AuthorizationService,gcube/service/retrieve/admin
|
||||
Common,AuthorizationService,gcube/service/retrieve/airtel123
|
||||
Common,AuthorizationService,gcube/service/retrieve/anupama@6
|
||||
Common,AuthorizationService,gcube/service/retrieve/azerty135
|
||||
Common,AuthorizationService,gcube/service/retrieve/bc70153a603d9de7e79c244c41270913
|
||||
Common,AuthorizationService,gcube/service/retrieve/birdyus1111
|
||||
Common,AuthorizationService,gcube/service/retrieve/cd91e3247d9efaf47fdbc505e44a2f8c
|
||||
Common,AuthorizationService,gcube/service/retrieve/d252540aaf6a9ee8457db5212e543189
|
||||
Common,AuthorizationService,gcube/service/retrieve/eth2016a334GqA
|
||||
Common,AuthorizationService,gcube/service/retrieve/f46d74ae-25b2-4146-b4eb-457bec37d0c
|
||||
Common,AuthorizationService,gcube/service/retrieve/fdas
|
||||
Common,AuthorizationService,gcube/service/retrieve/http://dataminer.d4science.org/wps/WebProcessingService
|
||||
Common,AuthorizationService,gcube/service/retrieve/https://tagme.d4science.org/tagme/tag
|
||||
Common,AuthorizationService,gcube/service/retrieve/mozilla2016btWaqKPD96VQ
|
||||
Common,AuthorizationService,gcube/service/retrieve/phd2016boh
|
||||
Common,AuthorizationService,gcube/service/retrieve/prcakoski0
|
||||
Common,AuthorizationService,gcube/service/retrieve/puellaladra
|
||||
Common,AuthorizationService,gcube/service/retrieve/rufus222
|
||||
Common,AuthorizationService,gcube/service/retrieve/season800trim
|
||||
Common,AuthorizationService,gcube/service/retrieve/set(['{UUID_TO_REPLACE}'])
|
||||
Common,AuthorizationService,gcube/service/retrieve/tindog95
|
||||
Common,AuthorizationService,gcube/service/retrieve/tyro8712
|
||||
Common,AuthorizationService,gcube/service/retrieve/xXXXXXX-XXXXXX-XXXXX-XXXXX
|
||||
Common,AuthorizationService,gcube/service/retrieve/{UUID_TO_REPLACE}
|
||||
Common,AuthorizationService,gcube/service/retrieve/{UUID_TO_REPLACE}-843339462
|
||||
Common,AuthorizationService,gcube/service/retrieve/{UUID_TO_REPLACE}-98187548
|
||||
Common,AuthorizationService,gcube/service/retrieve/{UUID_TO_REPLACE}=org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.OBIS_MOST_OBSERVED_SPECIES
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "Common",
|
||||
"serviceNameRegex": "AuthorizationService",
|
||||
"calledMethodRegex": "^/{0,1}gcube/service/retrieve.*"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "Common",
|
||||
"serviceName": "AuthorizationService",
|
||||
"calledMethod": "retrieve"
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
Common,AuthorizationService,e/gcube/resource/scopes
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "Common",
|
||||
"serviceNameRegex": "AuthorizationService",
|
||||
"calledMethodRegex": "^((e\/)|\/){0,1}gcube\/resource\/scopes"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "Common",
|
||||
"serviceName": "AuthorizationService",
|
||||
"calledMethod": "scopes"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest
|
||||
Data-Catalogue,Catalogue-WS,UNKNOWN
|
||||
Data-Catalogue,Catalogue-WS,OTHER
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "^\/rest$|^UNKNOWN$|^OTHER$"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "OTHER"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/api/groups/create
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/groups/show
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/items/create
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/items/delete
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/items/purge
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/items/show
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/resources/create
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/resources/delete
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/resources/show
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/namespaces/show
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})(?<Collection>(group|item|resource|namespace))(s){0,1}\/(?<Action>(create|show|purge|delete))(\/{0,1})"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "${Action} ${Collection}"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/api/groups/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/items/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/resources/list
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})(?<Collection>(groups|items|resources))\/(?<Action>list)(\/{0,1})"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "${Action} ${Collection}"
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/api/licenses/show
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})licen(c|s)es\/(?<Action>(create|show|purge|delete))(\/{0,1})"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "${Action} license"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/licenses/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/licenses/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/licences/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/licenses/list/
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/licences/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/licenses/list/
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})licen(c|s)es\/(?<Action>list)(\/{0,1})"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "${Action} licenses"
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/api/profiles/namespaces
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})profiles\/namespaces(s){0,1}.*"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "list namespaces"
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/create
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})organi(s|z)ation(s){0,1}\/(?<Action>(create|show|purge|delete))(\/{0,1})"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "${Action} organization"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/api/organisations/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organisation/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organization/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organisations/list/
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3fall_fields
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3fall_fields=true
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3finclude_dataset_count
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3finclude_dataset_count=true
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3flimit=2
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3foffset=2
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3forder_by=name
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/organizations/list/%3finclude_dataset_count=true
|
||||
Data-Catalogue,Catalogue-WS,listOrganizations
|
||||
Data-Catalogue,Catalogue-WS,listOrganization
|
||||
Data-Catalogue,Catalogue-WS,listOrganisations
|
||||
Data-Catalogue,Catalogue-WS,listOrganisation
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})organi(s|z)ation(s){0,1}\/(?<Action>list)(\/){0,1}.*|(listOrgani(s|z)ation(s{0,1}))"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "list organizations"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/api/profiles/profile
|
||||
Data-Catalogue,Catalogue-WS,rest/api/profiles/profile
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})profile(s){0,1}\/(?<Action>(show|profile))(\/){0,1}"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "show profile"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
Data-Catalogue,Catalogue-WS,/rest/api/profiles/profile_names
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/profiles/profile_names/
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/profile/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/profiles/list
|
||||
Data-Catalogue,Catalogue-WS,/rest/api/profiles/profile_names
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(Data-Catalogue)|(DataPublishing)",
|
||||
"serviceNameRegex": "Catalogue-WS",
|
||||
"calledMethodRegex": "(\/){0,1}(rest\/(api\/){0,1})profile(s){0,1}\/(?<Action>(list|profile_names))(\/{0,1})"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataPublishing",
|
||||
"serviceName": "Catalogue-WS",
|
||||
"calledMethod": "list profile"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,208 @@
|
|||
DataAccess,CkanConnector,/gcube/service/connect/group
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/biodiversity-lab
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/cophir
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/aquafarm-cages-in-greece
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect
|
||||
DataAccess,CkanConnector,/gcube/service/connect/%20dataset/aalto-foursquare
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dashboard/dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dashboard/datasets
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/aalto-foursquare
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/aalto-twitter
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/acrocephalus-paludicola
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/alieia-virtual-research-environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/all_aquamaps_occurrences_records
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/analytics_lab_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/title2
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/articles_and_comments_of_major_estonian_newspapers
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/base_bielefeld_academic_search_engine
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/best_practices_and_guidelines_towards_interoperability
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/blue_datathon_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/bluebridge_psc_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/bluebridge_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/borders
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/call_data_record_pisa_livorno_firenze_lucca_2014
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/carpooling
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/carpooling_never_drive_alone
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/cdr_data_-_rome
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/cdr_data_-_tuscany
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/coastal_water_surfaces
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/com-livejournal
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d10_11_data_processing_workflow_specification_language
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d10_12_vre_specification_and_software_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d10_2_sobigdata_e-_infrastructure_release_plan_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d10_5_sobigdata_e-infrastructure_software_release_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d10_8_resource_adaptation_to_register_to_the_e-infrastructure_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d1_1_all_relevant_boards_established
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d2_1_ethics_board_establishment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d2_2_legal_and_ethical_framework_for_sobigdata
|
||||
DataAccess,CkanConnector,/gcube/service/connect/stats
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d2_5_value-sensitive_design_and_privacy-by-design_technologies_for_big_data_analytics_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d2_6_ip_principles_and_business_models_2
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d3_1_project_web_site_project_presentation_and_social_media_presence
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d3_2_fact_sheets_aimed_at_different_stakeholders
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d3_3_initial_dissemination_and_impact_plan
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d3_4_periodic_dissemination_and_impact_report_and_plan_for_following_year_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d4_1_periodic_training_planning_report_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d4_4_data_scientists_training_materials_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d4_7_training_programme_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d4science_dataminer
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d5_1_preliminary_innovation_and_action_plan
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d6_1_periodic_reports_on_ta_activities_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d7_1_va_e-infrastructure_service_provision_and_operation_report_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d8_1_data_management_report
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d8_2_crowd_sensing_platform
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d8_4_integrating_open_data_through_innovation_accelerator_platforms
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/d9_1_social_mining_method_and_service_integration_1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/datacite
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/datahub
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/de_webarchive
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/debtrank_systemic_risk_estimation_method
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/demon
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/dictionary_creator
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/digital_dna_fingerprinting
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/disease_twitter_dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/distribution_of_the_giant_squid_architeuthis
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/e-mid_interbank_transactions
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/economic_integration_model
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/emid_dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/epidemic_sentiment_analysis
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/european_banks_asset_class_exposures
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/exploration_of_time_use_by_citizens_based_on_their_movement_tracks
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/soccer_team_performance
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/facebook_dataset_-_new_orleans_regional_network
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/facebook_eurosys_2009
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/fao-aquatic-species-distribution-map-of-bathyraja-spinicauda
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/fao-aquatic-species-distribution-map-of-bathyteuthis-abyssicola
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/fao-aquatic-species-distribution-map-of-chamelea-gallina
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/fao_tunaatlas_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/flickr_and_wikipedia_turism_trajectories
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/gate_cloud
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/geolife_-_gps_trajectories_dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/geotopics_-_a_method_and_system_to_explore_urban_activity
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/german_academic_web
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/global-environmental-parameters-with-half-degree-resolution
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/goniastrea-australensis-aquamaps-native-raster
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/gps_2011_05
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/gps_origin_destination_matrix_in_tuscany
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/gps_track_calabria
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/gps_track_mestre_-_italy
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/gps_track_milan_italy
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/gps_track_pisa_-_italy
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/gps_track_tuscany_by_volunteers
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/grsf_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/half-degree_cells_authority_file_-_hcaf
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/half-degree_cells_authority_file_-_hcaf_in_2050
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/half-degree_cells_authority_file_-_hcaf_in_2050.ttl
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/hpc_twitter_dumps
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/ices_abundanceestimationfromacoustic_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/ices_introduction_to_stock_assessment_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/ices_introduction_to_the_r_environment_2017_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/igd_visualisation_edito
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/igd_visualisation_editor
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/igd_visualization_editor
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/istat_census_zone_tuscany
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/kddmultigraph
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/latimeria-chalumnae-occurrences-layer19
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/latimeria_chalumnae_points
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/leader_detect
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/marine_lifewatch
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/matlas_-_optics_algorithm
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/maxandsam_network_recontruction_method
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/maximum_entropy_network_reconstruction
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/mobility_profile
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/modelling_scientific_migration
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/msn_search_query_log
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/my_aggregator_of_data_repositories
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/myway_-_trajectory_prediction
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/nasa-earth-exchange-annual-average-suface-air-temperature-projection-from-1950-to-2100-in-a-hig
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/ndlib-rest
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/nowcasting_migration_stocks_and_flows
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/number-of-observations-from-01-16-01-01-00-to-12-16-01-01-00-3d-world-ocean-atlas-09-nitrate-mo
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/official_administrative_information_of_tuscany
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/privacy_risk_on_sociometer
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/privacy_risk_on_trajectories
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/prova
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/prova1
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/prova2
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/publication_test
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/quickrank
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/retail_market_dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/rprototypinglab_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/scalable_data_mining_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/scienceresearch
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/scientific_publications_dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/scube
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/smaph_system_for_query_entity_linking
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/sociometer
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/statistical_validation
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/stocksandfisherieskb_virtual_research_environment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/superdiversity_and_sentiment
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/tagme
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/tail_granger_causality_network_construction
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/title
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/trajectory_builder
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/tripbuilder
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/twitter_dataset_2013-2014
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/twitter_monitor
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/urban_mobility_atlas
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/web_archive_re-crawler
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/wikidata_geo_mapper
|
||||
DataAccess,CkanConnector,/gcube/service/connect/dataset/word_sense_evolution_testset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/group/city-of-citizens-group
|
||||
DataAccess,CkanConnector,/gcube/service/connect/group/sobigdata-eu-dataset
|
||||
DataAccess,CkanConnector,/gcube/service/connect/group/societal-debates-group
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/biodiversitylab
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/biodivesitylab
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/bluebridgeproject
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/diodiversitylab
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/emodnet
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/fao
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/fao_tunaatlas
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/gcube
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/grsf
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/resourcecatalogue
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/siaspa
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization/tabulardatalab
|
||||
DataAccess,CkanConnector,/gcube/service/connect/organization_vre/fao_tunaatlas
|
||||
DataAccess,CkanConnector,/gcube/service/connect/type
|
||||
DataAccess,CkanConnector,gcube/service/connect
|
||||
DataAccess,CkanConnector,gcube/service/connect/dashboard/datasets
|
||||
DataAccess,CkanConnector,gcube/service/connect/dashboard/groups
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/abramis_brama_absence_generation_from_obis_id71eb69a754ab48cebefb52a448433
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/abramis_brama_absence_generation_from_obis_id71eb69a754ab48cebefb52a448433fa0
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/best_practices_and_guidelines_towards_interoperability
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/cirrhilabrus-scottorum3
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/de_webarchive
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/first_publication_from_biodiversity_lab
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/first_publication_in_bluebridgeproject
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/first_publication_in_d4science_production
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/from_root_to_blue_bridge_projec
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/geotopics_-_a_method_and_system_to_explore_urban_activity
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/my_deliverable
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/new_features_ckan
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/official_administrative_information_of_tuscany
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/origin_destination_matrix
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/presentation
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/tagme
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/{UUID_TO_REPLACE}
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/{UUID_TO_REPLACE}.rdf
|
||||
DataAccess,CkanConnector,gcube/service/connect/dataset/{UUID_TO_REPLACE}.ttl
|
||||
DataAccess,CkanConnector,gcube/service/connect/group
|
||||
DataAccess,CkanConnector,gcube/service/connect/group/firms
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/biodiversitylab
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/bluebridgeproject
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/d4science
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/fao_tunaatlas
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/gcube
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/grsf
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/grsf_admin
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/resourcecatalogue
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/sobigdata
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/stockassessment
|
||||
DataAccess,CkanConnector,gcube/service/connect/organization/tabulardatalab
|
||||
DataAccess,CkanConnector,gcube/service/connect/statitstics
|
||||
DataAccess,CkanConnector,gcube/service/connect/stats
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "DataAccess",
|
||||
"serviceNameRegex": "CkanConnector",
|
||||
"calledMethodRegex": "^\/{0,1}gcube\/service\/connect.*"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataAccess",
|
||||
"serviceName": "CkanConnector",
|
||||
"calledMethod": "connect"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
DataAccess,CkanConnector,gcube/service/disconnect
|
||||
DataAccess,CkanConnector,/gcube/service/disconnect
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "DataAccess",
|
||||
"serviceNameRegex": "CkanConnector",
|
||||
"calledMethodRegex": "^\/{0,1}gcube\/service\/disconnect.*"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataAccess",
|
||||
"serviceName": "CkanConnector",
|
||||
"calledMethod": "disconnect"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(WPS)|(DataAnalysis)",
|
||||
"serviceNameRegex": "DataMiner",
|
||||
"calledMethodRegex": "(?<CalledMethod>.*)"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataAnalysis",
|
||||
"serviceName": "DataMiner",
|
||||
"calledMethod": "${CalledMethod}"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
WPS,DataMiner,UNKNOWN
|
||||
WPS,DataMiner,OTHER
|
||||
WPS,DataMiner,gcube/resource/scopes
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(WPS)|(DataAnalysis)",
|
||||
"serviceNameRegex": "DataMiner",
|
||||
"calledMethodRegex": "^\/{0,1}(UNKNOWN|OTHER|(gcube\/resource\/scopes)).*"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataAnalysis",
|
||||
"serviceName": "DataMiner",
|
||||
"calledMethod": "OTHER"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
WPS,DataMiner,GetCapabilities
|
||||
WPS,DataMiner,/GetCapabilities
|
||||
WPS,DataMiner,RetrieveResultServlet
|
||||
WPS,DataMiner,/RetrieveResultServlet
|
||||
WPS,DataMiner,DescribeProcess
|
||||
WPS,DataMiner,/DescribeProcess
|
||||
WPS,DataMiner,WebProcessingService
|
||||
WPS,DataMiner,/WebProcessingService
|
||||
WPS,DataMiner,CancelComputationServlet
|
||||
WPS,DataMiner,/CancelComputationServlet
|
||||
WPS,DataMiner,Execute
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.clusterers.DBSCAN
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.clusterers.KMEANS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.clusterers.LOF
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.clusterers.XMEANS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.evaluators.DISCREPANCY_ANALYSIS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.evaluators.HRS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.evaluators.MAPS_COMPARISON
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.evaluators.QUALITY_ANALYSIS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.generators.AQUAMAPS_SUITABLE
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.generators.BIONYM
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.generators.FEED_FORWARD_A_N_N_DISTRIBUTION
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.generators.OCCURRENCES_MERGER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.modellers.FEED_FORWARD_ANN
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.AAPS_PUBLIC_PUBLISHER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ABSENCE_CELLS_FROM_AQUAMAPS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ABSENCE_GENERATION_FROM_OBIS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.BIOCLIMATE_HCAF
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.BIOCLIMATE_HSPEN
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.BIONYM_LOCAL
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CMSY_2
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CSQUARES_TO_COORDINATES
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CSQUARE_COLUMN_CREATOR
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CSV_TO_NETCDF_CONVERTER_XY
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ECOPATH_WITH_ECOSIM
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ESRI_GRID_EXTRACTION
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ESTIMATE_FISHING_ACTIVITY
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ESTIMATE_MONTHLY_FISHING_EFFORT
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.FAO_OCEAN_AREA_COLUMN_CREATOR
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.FAO_OCEAN_AREA_COLUMN_CREATOR_FROM_QUADRANT
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.GENERIC_CHARTS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.GEO_CHART
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.GERMAN_NAMED_ENTITY_RECOGNIZER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.GRID_CWP_TO_COORDINATES
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.HCAF_FILTER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ITALIAN_NER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LISTDBINFO
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LISTDBNAMES
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LISTDBSCHEMA
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LISTTABLES
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.MAX_ENT_NICHE_MODELLING
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.MOST_OBSERVED_SPECIES
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.MOST_OBSERVED_TAXA
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.MPA_INTERSECT_V3
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.MPA_INTERSECT_V3_2
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.OCCURRENCES_DUPLICATES_DELETER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.POINTS_TO_MAP
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.PRESENCE_CELLS_GENERATION
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.RASTER_DATA_PUBLISHER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SAMPLEONTABLE
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SEADATANET_INTERPOLATOR
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SGVM_INTERPOLATION
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SHAPEFILE_PUBLISHER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SIMULFISHKPIS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SMARTSAMPLEONTABLE
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SPECIES_OBSERVATIONS_PER_AREA
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SPECIES_OBSERVATIONS_TREND_PER_YEAR
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SPECIES_OBSERVATION_LME_AREA_PER_YEAR
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SPECIES_OBSERVATION_MEOW_AREA_PER_YEAR
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.SUBMITQUERY
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.TAXONOMY_OBSERVATIONS_TREND_PER_YEAR
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.TIMEEXTRACTION
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.TIMEEXTRACTION_TABLE
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.TIME_GEO_CHART
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.TIME_SERIES_ANALYSIS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.TIME_SERIES_CHARTS
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.WEB_APP_PUBLISHER
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.XYEXTRACTOR
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.XYEXTRACTOR_TABLE
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ZEXTRACTION
|
||||
WPS,DataMiner,Execute - org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.ZEXTRACTION_TABLE
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"match": {
|
||||
"serviceClassRegex": "(WPS)|(DataAnalysis)",
|
||||
"serviceNameRegex": "DataMiner",
|
||||
"calledMethodRegex": "^\/{0,1}(?<Method>(?!(UNKNOWN|OTHER|(gcube\/resource\/scopes))).*)"
|
||||
},
|
||||
"replace": {
|
||||
"serviceClass": "DataAnalysis",
|
||||
"serviceName": "DataMiner",
|
||||
"calledMethod": "${Method}"
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue