From 7789238924d741cf151ce05e64db548053ae526a Mon Sep 17 00:00:00 2001 From: Simon Bear Date: Thu, 21 Oct 2021 15:20:32 +1100 Subject: [PATCH 01/11] Increment version for next development interation --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index fe1c6255..d7ab9493 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ plugins { id "com.gorylenko.gradle-git-properties" version "1.4.17" } -version "2.4.0" +version "2.5.0-SNAPSHOT" group "au.org.ala" apply plugin:"eclipse" From 3bf1ecbece722791dc3350cd1cc7c673723b0a6c Mon Sep 17 00:00:00 2001 From: vjrj Date: Tue, 4 Jan 2022 12:33:23 +0100 Subject: [PATCH 02/11] Fix typo --- grails-app/i18n/messages.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grails-app/i18n/messages.properties b/grails-app/i18n/messages.properties index b6f1f266..2b441aed 100644 --- a/grails-app/i18n/messages.properties +++ b/grails-app/i18n/messages.properties @@ -202,7 +202,7 @@ myprofile.linking.with.flickr.enables.images=Linking with Flickr enables images myprofile.flickr.eol.group=Flickr EOL Group myprofile.to.be.linked.to.your.atlas=to be linked to your Atlas account so they can be attributed to you. myprofile.remove.link.to.flickr.account=Remove link to flickr account -myprofile.flicker.link.description=Linking with Flick enables images shared through Flickr to be linked to your Atlas account so they can be attributed to you. +myprofile.flicker.link.description=Linking with Flickr enables images shared through Flickr to be linked to your Atlas account so they can be attributed to you. myprofile.link.to.my.flickr.account=Link to my Flickr account myprofile.remove.link.to.inaturalist=Remove link to iNaturalist account myprofile.inaturalists.link.description=Linking your {0} account with iNaturalist will make it easier to find your observations in {1}. From 1cb02ed9450a1a01bac4e5a88cd951c770c57053 Mon Sep 17 00:00:00 2001 From: Simon Bear Date: Fri, 11 Feb 2022 09:47:02 +1100 Subject: [PATCH 03/11] - Build feature branches --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f5c07c6d..ed8df972 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,7 @@ branches: - master - hotfix - grails3 + - feature/* before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ From 35f3638c1d0eb8952f95c8ff280d78911f19f433 Mon Sep 17 00:00:00 2001 From: Simon Bear Date: Fri, 11 Feb 2022 09:52:43 +1100 Subject: [PATCH 04/11] Build feature branches --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ed8df972..e3840dbf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ branches: - master - hotfix - grails3 - - feature/* + - feature/.* before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ From 76a74b3cc976674dff31221b4c89b1bbd0d01b2f Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 24 Feb 2022 11:29:25 +1100 Subject: [PATCH 05/11] Updated copyright --- LICENSE.txt | 469 ++++++++++++++++++ .../assets/javascripts/createAccount.js | 15 + .../javascripts/jqueryValidationEngine.js | 15 + grails-app/conf/spring/resources.groovy | 15 + .../ala/userdetails/AdminController.groovy | 15 + .../AuthorisedSystemController.groovy | 15 + .../org/ala/userdetails/BaseController.groovy | 15 + .../userdetails/ExternalSiteController.groovy | 15 + .../userdetails/MobileKeyController.groovy | 15 + .../ala/userdetails/ProfileController.groovy | 15 + .../ala/userdetails/PropertyController.groovy | 15 + .../userdetails/RegistrationController.groovy | 15 + .../userdetails/RoleBasedInterceptor.groovy | 15 + .../org/ala/userdetails/RoleController.groovy | 15 + .../au/org/ala/userdetails/UrlMappings.groovy | 15 + .../org/ala/userdetails/UserController.groovy | 15 + .../userdetails/UserDetailsController.groovy | 15 + .../UserDetailsWebServicesInterceptor.groovy | 15 + .../ala/userdetails/UserRoleController.groovy | 15 + .../au/org/ala/userdetails/AuthKey.groovy | 15 + .../ala/userdetails/AuthorisedSystem.groovy | 15 + .../au/org/ala/userdetails/MobileUser.groovy | 15 + .../au/org/ala/userdetails/Password.groovy | 15 + .../domain/au/org/ala/userdetails/Role.groovy | 15 + .../domain/au/org/ala/userdetails/User.groovy | 15 + .../org/ala/userdetails/UserProperty.groovy | 15 + .../au/org/ala/userdetails/UserRole.groovy | 15 + .../au/org/ala/userdetails/Application.groovy | 15 + .../au/org/ala/userdetails/BootStrap.groovy | 15 + .../userdetails/UserDetailsCacheConfig.groovy | 15 + .../AuthorisedSystemService.groovy | 15 + .../org/ala/userdetails/EmailService.groovy | 15 + .../ala/userdetails/LocationService.groovy | 15 + .../ala/userdetails/PasswordService.groovy | 15 + .../org/ala/userdetails/ProfileService.groovy | 15 + .../au/org/ala/userdetails/UserService.groovy | 15 + .../ala/userdetails/LocationsTagLib.groovy | 15 + grails-app/views/admin/bulkUploadUsers.gsp | 14 + grails-app/views/admin/exportUsers.gsp | 14 + grails-app/views/admin/index.gsp | 14 + grails-app/views/admin/loadUsersResults.gsp | 14 + .../views/admin/resetPasswordForUser.gsp | 14 + .../views/admin/userPasswordResetSuccess.gsp | 14 + grails-app/views/authorisedSystem/create.gsp | 15 + grails-app/views/authorisedSystem/edit.gsp | 15 + grails-app/views/authorisedSystem/list.gsp | 15 + grails-app/views/authorisedSystem/show.gsp | 15 + grails-app/views/email/accessAccount.gsp | 15 + grails-app/views/email/activateAccount.gsp | 15 + .../views/email/activateAccountSuccess.gsp | 15 + grails-app/views/email/resetPassword.gsp | 15 + .../views/email/updateAccountSuccess.gsp | 15 + grails-app/views/index.gsp | 14 + grails-app/views/profile/flickrFail.gsp | 14 + grails-app/views/profile/flickrSuccess.gsp | 14 + grails-app/views/profile/inaturalistFail.gsp | 14 + grails-app/views/profile/myprofile.gsp | 15 + .../views/registration/accountActivated.gsp | 14 + .../accountActivatedSuccessful.gsp | 14 + .../views/registration/accountCreated.gsp | 14 + .../views/registration/accountDisabled.gsp | 14 + .../views/registration/accountError.gsp | 14 + .../views/registration/authKeyExpired.gsp | 14 + .../views/registration/createAccount.gsp | 14 + .../views/registration/duplicateSubmit.gsp | 14 + .../views/registration/forgottenPassword.gsp | 14 + .../views/registration/passwordReset.gsp | 14 + .../registration/passwordResetSuccess.gsp | 14 + .../views/registration/startPasswordReset.gsp | 14 + grails-app/views/role/create.gsp | 15 + grails-app/views/role/edit.gsp | 15 + grails-app/views/role/list.gsp | 15 + grails-app/views/role/show.gsp | 15 + grails-app/views/user/_form.gsp | 15 + grails-app/views/user/create.gsp | 15 + grails-app/views/user/edit.gsp | 15 + grails-app/views/user/list.gsp | 15 + grails-app/views/user/show.gsp | 15 + grails-app/views/userRole/create.gsp | 15 + grails-app/views/userRole/edit.gsp | 15 + grails-app/views/userRole/list.gsp | 15 + grails-app/views/userRole/show.gsp | 15 + .../org/ala/auth/BulkUserLoadResults.groovy | 15 + .../auth/PasswordResetFailedException.groovy | 15 + .../au/org/ala/auth/PreAuthorise.groovy | 15 + .../org/ala/auth/UpdatePasswordCommand.groovy | 15 + .../org/ala/oauth/apis/InaturalistApi.groovy | 15 + .../org/ala/recaptcha/RecaptchaClient.groovy | 15 + .../ala/recaptcha/RecaptchaResponse.groovy | 15 + .../marshaller/CustomObjectMarshallers.groovy | 15 + .../marshaller/UserMarshaller.groovy | 15 + .../marshaller/UserPropertyMarshaller.groovy | 15 + .../java/au/org/ala/cas/encoding/Base64.java | 15 + .../cas/encoding/BcryptPasswordEncoder.java | 15 + .../ala/cas/encoding/CloseShieldWriter.java | 15 + .../cas/encoding/LegacyPasswordEncoder.java | 15 + .../org/ala/cas/encoding/PasswordEncoder.java | 15 + src/main/resources/userdetails-ehcache.xml | 15 + .../userdetails/LocationServiceSpec.groovy | 15 + .../RegistrationControllerSpec.groovy | 15 + .../RoleBasedInterceptorSpec.groovy | 15 + .../UserDetailsControllerSpec.groovy | 15 + .../ala/userdetails/UserDetailsSpec.groovy | 15 + ...erDetailsWebServicesInterceptorSpec.groovy | 15 + .../userdetails/UserRoleControllerSpec.groovy | 15 + .../marshaller/UserMarshallerSpec.groovy | 15 + 106 files changed, 2022 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..8b7c1537 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,469 @@ + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the MPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + https://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] \ No newline at end of file diff --git a/grails-app/assets/javascripts/createAccount.js b/grails-app/assets/javascripts/createAccount.js index 210ec156..7875e148 100644 --- a/grails-app/assets/javascripts/createAccount.js +++ b/grails-app/assets/javascripts/createAccount.js @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + //= encoding UTF-8 // Also depends on autocomplete which is provided by the ala-bootstrap3 template //= require jqueryValidationEngine diff --git a/grails-app/assets/javascripts/jqueryValidationEngine.js b/grails-app/assets/javascripts/jqueryValidationEngine.js index 23db1770..9ca9789b 100644 --- a/grails-app/assets/javascripts/jqueryValidationEngine.js +++ b/grails-app/assets/javascripts/jqueryValidationEngine.js @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + //= encoding UTF-8 //= require jquery.validationEngine-2.6.2/jquery.validationEngine.js //= require jquery.validationEngine-2.6.2/jquery.validationEngine-en.js \ No newline at end of file diff --git a/grails-app/conf/spring/resources.groovy b/grails-app/conf/spring/resources.groovy index c873c1db..06202d36 100644 --- a/grails-app/conf/spring/resources.groovy +++ b/grails-app/conf/spring/resources.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + // Place your Spring DSL code here import au.org.ala.userdetails.marshaller.*; beans = { diff --git a/grails-app/controllers/au/org/ala/userdetails/AdminController.groovy b/grails-app/controllers/au/org/ala/userdetails/AdminController.groovy index edd4cec9..2c96a515 100644 --- a/grails-app/controllers/au/org/ala/userdetails/AdminController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/AdminController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.PreAuthorise diff --git a/grails-app/controllers/au/org/ala/userdetails/AuthorisedSystemController.groovy b/grails-app/controllers/au/org/ala/userdetails/AuthorisedSystemController.groovy index 7110a3d9..4d7ec4af 100644 --- a/grails-app/controllers/au/org/ala/userdetails/AuthorisedSystemController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/AuthorisedSystemController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.PreAuthorise diff --git a/grails-app/controllers/au/org/ala/userdetails/BaseController.groovy b/grails-app/controllers/au/org/ala/userdetails/BaseController.groovy index 4abce159..9dd4399f 100644 --- a/grails-app/controllers/au/org/ala/userdetails/BaseController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/BaseController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.converters.JSON diff --git a/grails-app/controllers/au/org/ala/userdetails/ExternalSiteController.groovy b/grails-app/controllers/au/org/ala/userdetails/ExternalSiteController.groovy index 3e269c2f..d30517fc 100644 --- a/grails-app/controllers/au/org/ala/userdetails/ExternalSiteController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/ExternalSiteController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.converters.JSON diff --git a/grails-app/controllers/au/org/ala/userdetails/MobileKeyController.groovy b/grails-app/controllers/au/org/ala/userdetails/MobileKeyController.groovy index b4af28a7..8f0fce10 100644 --- a/grails-app/controllers/au/org/ala/userdetails/MobileKeyController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/MobileKeyController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import org.apache.http.client.HttpClient; diff --git a/grails-app/controllers/au/org/ala/userdetails/ProfileController.groovy b/grails-app/controllers/au/org/ala/userdetails/ProfileController.groovy index 7006d83e..f67c89a9 100644 --- a/grails-app/controllers/au/org/ala/userdetails/ProfileController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/ProfileController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.oauth.apis.InaturalistApi diff --git a/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy b/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy index 5a0f609d..4b727435 100644 --- a/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.converters.JSON diff --git a/grails-app/controllers/au/org/ala/userdetails/RegistrationController.groovy b/grails-app/controllers/au/org/ala/userdetails/RegistrationController.groovy index 72cb37d3..78e80720 100644 --- a/grails-app/controllers/au/org/ala/userdetails/RegistrationController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/RegistrationController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.UpdatePasswordCommand diff --git a/grails-app/controllers/au/org/ala/userdetails/RoleBasedInterceptor.groovy b/grails-app/controllers/au/org/ala/userdetails/RoleBasedInterceptor.groovy index 8b219ed6..846a10ec 100644 --- a/grails-app/controllers/au/org/ala/userdetails/RoleBasedInterceptor.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/RoleBasedInterceptor.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.PreAuthorise diff --git a/grails-app/controllers/au/org/ala/userdetails/RoleController.groovy b/grails-app/controllers/au/org/ala/userdetails/RoleController.groovy index 86d595f9..be10ab80 100644 --- a/grails-app/controllers/au/org/ala/userdetails/RoleController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/RoleController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.PreAuthorise diff --git a/grails-app/controllers/au/org/ala/userdetails/UrlMappings.groovy b/grails-app/controllers/au/org/ala/userdetails/UrlMappings.groovy index a9210960..b657624a 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UrlMappings.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UrlMappings.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class UrlMappings { diff --git a/grails-app/controllers/au/org/ala/userdetails/UserController.groovy b/grails-app/controllers/au/org/ala/userdetails/UserController.groovy index 9d9373fe..17687975 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.PreAuthorise diff --git a/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy b/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy index 731b53df..a8ce1859 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.cas.encoding.CloseShieldWriter diff --git a/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy b/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy index 0d22a4f0..f09aca50 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import groovy.transform.CompileStatic diff --git a/grails-app/controllers/au/org/ala/userdetails/UserRoleController.groovy b/grails-app/controllers/au/org/ala/userdetails/UserRoleController.groovy index d605c4a0..4b559e52 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserRoleController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserRoleController.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.PreAuthorise diff --git a/grails-app/domain/au/org/ala/userdetails/AuthKey.groovy b/grails-app/domain/au/org/ala/userdetails/AuthKey.groovy index 12dace5b..9c93c5c7 100644 --- a/grails-app/domain/au/org/ala/userdetails/AuthKey.groovy +++ b/grails-app/domain/au/org/ala/userdetails/AuthKey.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class AuthKey { diff --git a/grails-app/domain/au/org/ala/userdetails/AuthorisedSystem.groovy b/grails-app/domain/au/org/ala/userdetails/AuthorisedSystem.groovy index bd0a71b3..7b6c2dcb 100644 --- a/grails-app/domain/au/org/ala/userdetails/AuthorisedSystem.groovy +++ b/grails-app/domain/au/org/ala/userdetails/AuthorisedSystem.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class AuthorisedSystem { diff --git a/grails-app/domain/au/org/ala/userdetails/MobileUser.groovy b/grails-app/domain/au/org/ala/userdetails/MobileUser.groovy index 02cc1d39..a1cd6b1f 100644 --- a/grails-app/domain/au/org/ala/userdetails/MobileUser.groovy +++ b/grails-app/domain/au/org/ala/userdetails/MobileUser.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class MobileUser { diff --git a/grails-app/domain/au/org/ala/userdetails/Password.groovy b/grails-app/domain/au/org/ala/userdetails/Password.groovy index b8c1d4c0..5bc762b1 100644 --- a/grails-app/domain/au/org/ala/userdetails/Password.groovy +++ b/grails-app/domain/au/org/ala/userdetails/Password.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import java.sql.Timestamp diff --git a/grails-app/domain/au/org/ala/userdetails/Role.groovy b/grails-app/domain/au/org/ala/userdetails/Role.groovy index ee949b77..79f90eec 100644 --- a/grails-app/domain/au/org/ala/userdetails/Role.groovy +++ b/grails-app/domain/au/org/ala/userdetails/Role.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class Role implements Serializable { diff --git a/grails-app/domain/au/org/ala/userdetails/User.groovy b/grails-app/domain/au/org/ala/userdetails/User.groovy index ec4af280..f1b9933f 100644 --- a/grails-app/domain/au/org/ala/userdetails/User.groovy +++ b/grails-app/domain/au/org/ala/userdetails/User.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import java.sql.Timestamp diff --git a/grails-app/domain/au/org/ala/userdetails/UserProperty.groovy b/grails-app/domain/au/org/ala/userdetails/UserProperty.groovy index c6e823ea..cfca48f0 100644 --- a/grails-app/domain/au/org/ala/userdetails/UserProperty.groovy +++ b/grails-app/domain/au/org/ala/userdetails/UserProperty.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class UserProperty implements Serializable { diff --git a/grails-app/domain/au/org/ala/userdetails/UserRole.groovy b/grails-app/domain/au/org/ala/userdetails/UserRole.groovy index ba2597b3..c441ecad 100644 --- a/grails-app/domain/au/org/ala/userdetails/UserRole.groovy +++ b/grails-app/domain/au/org/ala/userdetails/UserRole.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class UserRole implements Serializable { diff --git a/grails-app/init/au/org/ala/userdetails/Application.groovy b/grails-app/init/au/org/ala/userdetails/Application.groovy index 94c52882..47062625 100644 --- a/grails-app/init/au/org/ala/userdetails/Application.groovy +++ b/grails-app/init/au/org/ala/userdetails/Application.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.recaptcha.RecaptchaClient diff --git a/grails-app/init/au/org/ala/userdetails/BootStrap.groovy b/grails-app/init/au/org/ala/userdetails/BootStrap.groovy index 442ce7b5..c4091201 100644 --- a/grails-app/init/au/org/ala/userdetails/BootStrap.groovy +++ b/grails-app/init/au/org/ala/userdetails/BootStrap.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.userdetails.Role diff --git a/grails-app/init/au/org/ala/userdetails/UserDetailsCacheConfig.groovy b/grails-app/init/au/org/ala/userdetails/UserDetailsCacheConfig.groovy index 883d1386..3ebf9bd2 100644 --- a/grails-app/init/au/org/ala/userdetails/UserDetailsCacheConfig.groovy +++ b/grails-app/init/au/org/ala/userdetails/UserDetailsCacheConfig.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails config = { diff --git a/grails-app/services/au/org/ala/userdetails/AuthorisedSystemService.groovy b/grails-app/services/au/org/ala/userdetails/AuthorisedSystemService.groovy index edd47f7a..1d07c782 100644 --- a/grails-app/services/au/org/ala/userdetails/AuthorisedSystemService.groovy +++ b/grails-app/services/au/org/ala/userdetails/AuthorisedSystemService.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import javax.servlet.http.HttpServletRequest diff --git a/grails-app/services/au/org/ala/userdetails/EmailService.groovy b/grails-app/services/au/org/ala/userdetails/EmailService.groovy index 4610a4f3..957e88d9 100644 --- a/grails-app/services/au/org/ala/userdetails/EmailService.groovy +++ b/grails-app/services/au/org/ala/userdetails/EmailService.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.PasswordResetFailedException diff --git a/grails-app/services/au/org/ala/userdetails/LocationService.groovy b/grails-app/services/au/org/ala/userdetails/LocationService.groovy index 7c18eb96..0b53377f 100644 --- a/grails-app/services/au/org/ala/userdetails/LocationService.groovy +++ b/grails-app/services/au/org/ala/userdetails/LocationService.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.converters.JSON diff --git a/grails-app/services/au/org/ala/userdetails/PasswordService.groovy b/grails-app/services/au/org/ala/userdetails/PasswordService.groovy index 238e61a0..32f29d23 100644 --- a/grails-app/services/au/org/ala/userdetails/PasswordService.groovy +++ b/grails-app/services/au/org/ala/userdetails/PasswordService.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.cas.encoding.BcryptPasswordEncoder diff --git a/grails-app/services/au/org/ala/userdetails/ProfileService.groovy b/grails-app/services/au/org/ala/userdetails/ProfileService.groovy index a6e42325..134192ba 100644 --- a/grails-app/services/au/org/ala/userdetails/ProfileService.groovy +++ b/grails-app/services/au/org/ala/userdetails/ProfileService.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class ProfileService { diff --git a/grails-app/services/au/org/ala/userdetails/UserService.groovy b/grails-app/services/au/org/ala/userdetails/UserService.groovy index 8b046e4b..5b639fe2 100644 --- a/grails-app/services/au/org/ala/userdetails/UserService.groovy +++ b/grails-app/services/au/org/ala/userdetails/UserService.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.auth.BulkUserLoadResults diff --git a/grails-app/taglib/au/org/ala/userdetails/LocationsTagLib.groovy b/grails-app/taglib/au/org/ala/userdetails/LocationsTagLib.groovy index 4d27e32d..23b68a1b 100644 --- a/grails-app/taglib/au/org/ala/userdetails/LocationsTagLib.groovy +++ b/grails-app/taglib/au/org/ala/userdetails/LocationsTagLib.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails class LocationsTagLib { diff --git a/grails-app/views/admin/bulkUploadUsers.gsp b/grails-app/views/admin/bulkUploadUsers.gsp index d6fb9983..3e440e48 100644 --- a/grails-app/views/admin/bulkUploadUsers.gsp +++ b/grails-app/views/admin/bulkUploadUsers.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/admin/exportUsers.gsp b/grails-app/views/admin/exportUsers.gsp index 720d661c..ed054e55 100644 --- a/grails-app/views/admin/exportUsers.gsp +++ b/grails-app/views/admin/exportUsers.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/admin/index.gsp b/grails-app/views/admin/index.gsp index 9f72589e..ce722ae5 100644 --- a/grails-app/views/admin/index.gsp +++ b/grails-app/views/admin/index.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/admin/loadUsersResults.gsp b/grails-app/views/admin/loadUsersResults.gsp index 521a58e5..5c385eb8 100644 --- a/grails-app/views/admin/loadUsersResults.gsp +++ b/grails-app/views/admin/loadUsersResults.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/admin/resetPasswordForUser.gsp b/grails-app/views/admin/resetPasswordForUser.gsp index 3098f78e..c9bb6e9c 100644 --- a/grails-app/views/admin/resetPasswordForUser.gsp +++ b/grails-app/views/admin/resetPasswordForUser.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/admin/userPasswordResetSuccess.gsp b/grails-app/views/admin/userPasswordResetSuccess.gsp index bed93cdf..48719b71 100644 --- a/grails-app/views/admin/userPasswordResetSuccess.gsp +++ b/grails-app/views/admin/userPasswordResetSuccess.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/authorisedSystem/create.gsp b/grails-app/views/authorisedSystem/create.gsp index 6cb39d35..c46e6194 100644 --- a/grails-app/views/authorisedSystem/create.gsp +++ b/grails-app/views/authorisedSystem/create.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.AuthorisedSystem" %> diff --git a/grails-app/views/authorisedSystem/edit.gsp b/grails-app/views/authorisedSystem/edit.gsp index a76df405..899820c2 100644 --- a/grails-app/views/authorisedSystem/edit.gsp +++ b/grails-app/views/authorisedSystem/edit.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.AuthorisedSystem" %> diff --git a/grails-app/views/authorisedSystem/list.gsp b/grails-app/views/authorisedSystem/list.gsp index 5ad2307c..91f291cb 100644 --- a/grails-app/views/authorisedSystem/list.gsp +++ b/grails-app/views/authorisedSystem/list.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.AuthorisedSystem" %> diff --git a/grails-app/views/authorisedSystem/show.gsp b/grails-app/views/authorisedSystem/show.gsp index fc60dd3c..08111aee 100644 --- a/grails-app/views/authorisedSystem/show.gsp +++ b/grails-app/views/authorisedSystem/show.gsp @@ -1,4 +1,19 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.AuthorisedSystem" %> diff --git a/grails-app/views/email/accessAccount.gsp b/grails-app/views/email/accessAccount.gsp index 0d7d1654..5e7fea3b 100644 --- a/grails-app/views/email/accessAccount.gsp +++ b/grails-app/views/email/accessAccount.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page contentType="text/html"%> diff --git a/grails-app/views/email/activateAccount.gsp b/grails-app/views/email/activateAccount.gsp index eede4299..0a09a5bd 100644 --- a/grails-app/views/email/activateAccount.gsp +++ b/grails-app/views/email/activateAccount.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page contentType="text/html"%> diff --git a/grails-app/views/email/activateAccountSuccess.gsp b/grails-app/views/email/activateAccountSuccess.gsp index d22d9197..286a7fca 100644 --- a/grails-app/views/email/activateAccountSuccess.gsp +++ b/grails-app/views/email/activateAccountSuccess.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page contentType="text/html"%> diff --git a/grails-app/views/email/resetPassword.gsp b/grails-app/views/email/resetPassword.gsp index ecf06645..75e8437f 100644 --- a/grails-app/views/email/resetPassword.gsp +++ b/grails-app/views/email/resetPassword.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page contentType="text/html"%> diff --git a/grails-app/views/email/updateAccountSuccess.gsp b/grails-app/views/email/updateAccountSuccess.gsp index 5b600761..7df510b0 100644 --- a/grails-app/views/email/updateAccountSuccess.gsp +++ b/grails-app/views/email/updateAccountSuccess.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page contentType="text/html"%> diff --git a/grails-app/views/index.gsp b/grails-app/views/index.gsp index e2732feb..3e0a01c5 100644 --- a/grails-app/views/index.gsp +++ b/grails-app/views/index.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/profile/flickrFail.gsp b/grails-app/views/profile/flickrFail.gsp index 7039eaf1..0ebf1f55 100644 --- a/grails-app/views/profile/flickrFail.gsp +++ b/grails-app/views/profile/flickrFail.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/profile/flickrSuccess.gsp b/grails-app/views/profile/flickrSuccess.gsp index 92729137..94475642 100644 --- a/grails-app/views/profile/flickrSuccess.gsp +++ b/grails-app/views/profile/flickrSuccess.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/profile/inaturalistFail.gsp b/grails-app/views/profile/inaturalistFail.gsp index b8f01cb7..1aa902d6 100644 --- a/grails-app/views/profile/inaturalistFail.gsp +++ b/grails-app/views/profile/inaturalistFail.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/profile/myprofile.gsp b/grails-app/views/profile/myprofile.gsp index 03cca696..ebab8f67 100644 --- a/grails-app/views/profile/myprofile.gsp +++ b/grails-app/views/profile/myprofile.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="grails.util.Holders" %> diff --git a/grails-app/views/registration/accountActivated.gsp b/grails-app/views/registration/accountActivated.gsp index adf00aa8..bb90391d 100644 --- a/grails-app/views/registration/accountActivated.gsp +++ b/grails-app/views/registration/accountActivated.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/accountActivatedSuccessful.gsp b/grails-app/views/registration/accountActivatedSuccessful.gsp index d7cd8504..ff007bd2 100644 --- a/grails-app/views/registration/accountActivatedSuccessful.gsp +++ b/grails-app/views/registration/accountActivatedSuccessful.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/accountCreated.gsp b/grails-app/views/registration/accountCreated.gsp index f642f5af..984c4aba 100644 --- a/grails-app/views/registration/accountCreated.gsp +++ b/grails-app/views/registration/accountCreated.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/accountDisabled.gsp b/grails-app/views/registration/accountDisabled.gsp index d8d7f3eb..e97394d7 100644 --- a/grails-app/views/registration/accountDisabled.gsp +++ b/grails-app/views/registration/accountDisabled.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/accountError.gsp b/grails-app/views/registration/accountError.gsp index 47a7b9e6..129a2f6d 100644 --- a/grails-app/views/registration/accountError.gsp +++ b/grails-app/views/registration/accountError.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/authKeyExpired.gsp b/grails-app/views/registration/authKeyExpired.gsp index 1d739e87..fea11b2c 100644 --- a/grails-app/views/registration/authKeyExpired.gsp +++ b/grails-app/views/registration/authKeyExpired.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/createAccount.gsp b/grails-app/views/registration/createAccount.gsp index b525b60c..c5f0803e 100644 --- a/grails-app/views/registration/createAccount.gsp +++ b/grails-app/views/registration/createAccount.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/duplicateSubmit.gsp b/grails-app/views/registration/duplicateSubmit.gsp index 0f37effe..3be77437 100644 --- a/grails-app/views/registration/duplicateSubmit.gsp +++ b/grails-app/views/registration/duplicateSubmit.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/forgottenPassword.gsp b/grails-app/views/registration/forgottenPassword.gsp index 0e77d8e6..fc764d52 100644 --- a/grails-app/views/registration/forgottenPassword.gsp +++ b/grails-app/views/registration/forgottenPassword.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/passwordReset.gsp b/grails-app/views/registration/passwordReset.gsp index 3b1de3fb..7335bc38 100644 --- a/grails-app/views/registration/passwordReset.gsp +++ b/grails-app/views/registration/passwordReset.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/passwordResetSuccess.gsp b/grails-app/views/registration/passwordResetSuccess.gsp index 5d4b6fe1..3ce39aac 100644 --- a/grails-app/views/registration/passwordResetSuccess.gsp +++ b/grails-app/views/registration/passwordResetSuccess.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/registration/startPasswordReset.gsp b/grails-app/views/registration/startPasswordReset.gsp index 2c96d106..45485eeb 100644 --- a/grails-app/views/registration/startPasswordReset.gsp +++ b/grails-app/views/registration/startPasswordReset.gsp @@ -1,3 +1,17 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% diff --git a/grails-app/views/role/create.gsp b/grails-app/views/role/create.gsp index 158ba2c5..2e0bcdb5 100644 --- a/grails-app/views/role/create.gsp +++ b/grails-app/views/role/create.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.Role" %> diff --git a/grails-app/views/role/edit.gsp b/grails-app/views/role/edit.gsp index 331f5f13..e5d63d41 100644 --- a/grails-app/views/role/edit.gsp +++ b/grails-app/views/role/edit.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.Role" %> diff --git a/grails-app/views/role/list.gsp b/grails-app/views/role/list.gsp index 913464f6..e1b9407d 100644 --- a/grails-app/views/role/list.gsp +++ b/grails-app/views/role/list.gsp @@ -1,4 +1,19 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.Role" %> diff --git a/grails-app/views/role/show.gsp b/grails-app/views/role/show.gsp index 56b81ab1..3ca80fb4 100644 --- a/grails-app/views/role/show.gsp +++ b/grails-app/views/role/show.gsp @@ -1,4 +1,19 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.Role" %> diff --git a/grails-app/views/user/_form.gsp b/grails-app/views/user/_form.gsp index bd87d6c5..725f9809 100644 --- a/grails-app/views/user/_form.gsp +++ b/grails-app/views/user/_form.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.User" %>
diff --git a/grails-app/views/user/create.gsp b/grails-app/views/user/create.gsp index 3d09b93c..511123af 100644 --- a/grails-app/views/user/create.gsp +++ b/grails-app/views/user/create.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.User" %> diff --git a/grails-app/views/user/edit.gsp b/grails-app/views/user/edit.gsp index 648edfb2..5ea1ba02 100644 --- a/grails-app/views/user/edit.gsp +++ b/grails-app/views/user/edit.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.User" %> diff --git a/grails-app/views/user/list.gsp b/grails-app/views/user/list.gsp index 36ad0e1c..3a382016 100644 --- a/grails-app/views/user/list.gsp +++ b/grails-app/views/user/list.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.User" %> diff --git a/grails-app/views/user/show.gsp b/grails-app/views/user/show.gsp index d52428ac..cb1cfc4d 100644 --- a/grails-app/views/user/show.gsp +++ b/grails-app/views/user/show.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.User" %> diff --git a/grails-app/views/userRole/create.gsp b/grails-app/views/userRole/create.gsp index c104a856..99c3ba08 100644 --- a/grails-app/views/userRole/create.gsp +++ b/grails-app/views/userRole/create.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.UserRole" %> diff --git a/grails-app/views/userRole/edit.gsp b/grails-app/views/userRole/edit.gsp index 4331a46c..4351a4d2 100644 --- a/grails-app/views/userRole/edit.gsp +++ b/grails-app/views/userRole/edit.gsp @@ -1,3 +1,18 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.UserRole" %> diff --git a/grails-app/views/userRole/list.gsp b/grails-app/views/userRole/list.gsp index 34982dbc..e86f4444 100644 --- a/grails-app/views/userRole/list.gsp +++ b/grails-app/views/userRole/list.gsp @@ -1,4 +1,19 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.UserRole" %> diff --git a/grails-app/views/userRole/show.gsp b/grails-app/views/userRole/show.gsp index 6278aab0..4617a5a5 100644 --- a/grails-app/views/userRole/show.gsp +++ b/grails-app/views/userRole/show.gsp @@ -1,4 +1,19 @@ +%{-- + - Copyright (C) 2022 Atlas of Living Australia + - All Rights Reserved. + - + - The contents of this file are subject to the Mozilla Public + - License Version 1.1 (the "License"); you may not use this file + - except in compliance with the License. You may obtain a copy of + - the License at http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS + - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + - implied. See the License for the specific language governing + - rights and limitations under the License. + --}% + <%@ page import="au.org.ala.userdetails.UserRole" %> diff --git a/src/main/groovy/au/org/ala/auth/BulkUserLoadResults.groovy b/src/main/groovy/au/org/ala/auth/BulkUserLoadResults.groovy index 2105d95c..6a8fd347 100644 --- a/src/main/groovy/au/org/ala/auth/BulkUserLoadResults.groovy +++ b/src/main/groovy/au/org/ala/auth/BulkUserLoadResults.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.auth /** diff --git a/src/main/groovy/au/org/ala/auth/PasswordResetFailedException.groovy b/src/main/groovy/au/org/ala/auth/PasswordResetFailedException.groovy index 33d34a1c..383c9b39 100644 --- a/src/main/groovy/au/org/ala/auth/PasswordResetFailedException.groovy +++ b/src/main/groovy/au/org/ala/auth/PasswordResetFailedException.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.auth /** diff --git a/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy b/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy index 96596faf..9dbfb2a4 100644 --- a/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy +++ b/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.auth import java.lang.annotation.Documented diff --git a/src/main/groovy/au/org/ala/auth/UpdatePasswordCommand.groovy b/src/main/groovy/au/org/ala/auth/UpdatePasswordCommand.groovy index d913abd4..e977ff06 100644 --- a/src/main/groovy/au/org/ala/auth/UpdatePasswordCommand.groovy +++ b/src/main/groovy/au/org/ala/auth/UpdatePasswordCommand.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.auth import grails.validation.Validateable diff --git a/src/main/groovy/au/org/ala/oauth/apis/InaturalistApi.groovy b/src/main/groovy/au/org/ala/oauth/apis/InaturalistApi.groovy index 09bb83b5..f2525607 100644 --- a/src/main/groovy/au/org/ala/oauth/apis/InaturalistApi.groovy +++ b/src/main/groovy/au/org/ala/oauth/apis/InaturalistApi.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.oauth.apis import com.github.scribejava.core.builder.api.DefaultApi20 diff --git a/src/main/groovy/au/org/ala/recaptcha/RecaptchaClient.groovy b/src/main/groovy/au/org/ala/recaptcha/RecaptchaClient.groovy index b653c786..30ad5e38 100644 --- a/src/main/groovy/au/org/ala/recaptcha/RecaptchaClient.groovy +++ b/src/main/groovy/au/org/ala/recaptcha/RecaptchaClient.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.recaptcha import groovy.transform.CompileStatic diff --git a/src/main/groovy/au/org/ala/recaptcha/RecaptchaResponse.groovy b/src/main/groovy/au/org/ala/recaptcha/RecaptchaResponse.groovy index e47a0c42..fc2dac27 100644 --- a/src/main/groovy/au/org/ala/recaptcha/RecaptchaResponse.groovy +++ b/src/main/groovy/au/org/ala/recaptcha/RecaptchaResponse.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.recaptcha import com.squareup.moshi.Json diff --git a/src/main/groovy/au/org/ala/userdetails/marshaller/CustomObjectMarshallers.groovy b/src/main/groovy/au/org/ala/userdetails/marshaller/CustomObjectMarshallers.groovy index 567cd39a..35677edb 100644 --- a/src/main/groovy/au/org/ala/userdetails/marshaller/CustomObjectMarshallers.groovy +++ b/src/main/groovy/au/org/ala/userdetails/marshaller/CustomObjectMarshallers.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails.marshaller /** * Created by Temi Varghese on 8/09/15. diff --git a/src/main/groovy/au/org/ala/userdetails/marshaller/UserMarshaller.groovy b/src/main/groovy/au/org/ala/userdetails/marshaller/UserMarshaller.groovy index 4f2a5c8d..ef07a438 100644 --- a/src/main/groovy/au/org/ala/userdetails/marshaller/UserMarshaller.groovy +++ b/src/main/groovy/au/org/ala/userdetails/marshaller/UserMarshaller.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails.marshaller import au.org.ala.userdetails.User diff --git a/src/main/groovy/au/org/ala/userdetails/marshaller/UserPropertyMarshaller.groovy b/src/main/groovy/au/org/ala/userdetails/marshaller/UserPropertyMarshaller.groovy index d6ee33f1..7848e3ba 100644 --- a/src/main/groovy/au/org/ala/userdetails/marshaller/UserPropertyMarshaller.groovy +++ b/src/main/groovy/au/org/ala/userdetails/marshaller/UserPropertyMarshaller.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + /** * Created by Temi Varghese on 8/09/15. */ diff --git a/src/main/java/au/org/ala/cas/encoding/Base64.java b/src/main/java/au/org/ala/cas/encoding/Base64.java index e0af1ffe..7a88a5bc 100644 --- a/src/main/java/au/org/ala/cas/encoding/Base64.java +++ b/src/main/java/au/org/ala/cas/encoding/Base64.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.cas.encoding; diff --git a/src/main/java/au/org/ala/cas/encoding/BcryptPasswordEncoder.java b/src/main/java/au/org/ala/cas/encoding/BcryptPasswordEncoder.java index 9a5c9874..aebd4031 100644 --- a/src/main/java/au/org/ala/cas/encoding/BcryptPasswordEncoder.java +++ b/src/main/java/au/org/ala/cas/encoding/BcryptPasswordEncoder.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.cas.encoding; import org.mindrot.jbcrypt.BCrypt; diff --git a/src/main/java/au/org/ala/cas/encoding/CloseShieldWriter.java b/src/main/java/au/org/ala/cas/encoding/CloseShieldWriter.java index 68f19891..7febc5a5 100644 --- a/src/main/java/au/org/ala/cas/encoding/CloseShieldWriter.java +++ b/src/main/java/au/org/ala/cas/encoding/CloseShieldWriter.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.cas.encoding; import org.apache.commons.io.output.ProxyWriter; diff --git a/src/main/java/au/org/ala/cas/encoding/LegacyPasswordEncoder.java b/src/main/java/au/org/ala/cas/encoding/LegacyPasswordEncoder.java index b6d7d2a7..7218d0d9 100644 --- a/src/main/java/au/org/ala/cas/encoding/LegacyPasswordEncoder.java +++ b/src/main/java/au/org/ala/cas/encoding/LegacyPasswordEncoder.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.cas.encoding; import java.io.UnsupportedEncodingException; diff --git a/src/main/java/au/org/ala/cas/encoding/PasswordEncoder.java b/src/main/java/au/org/ala/cas/encoding/PasswordEncoder.java index 759da40d..0d426ee5 100644 --- a/src/main/java/au/org/ala/cas/encoding/PasswordEncoder.java +++ b/src/main/java/au/org/ala/cas/encoding/PasswordEncoder.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.cas.encoding; public interface PasswordEncoder { diff --git a/src/main/resources/userdetails-ehcache.xml b/src/main/resources/userdetails-ehcache.xml index 9892f2ba..ecd261c5 100644 --- a/src/main/resources/userdetails-ehcache.xml +++ b/src/main/resources/userdetails-ehcache.xml @@ -1,3 +1,18 @@ + + diff --git a/src/test/groovy/au/org/ala/userdetails/LocationServiceSpec.groovy b/src/test/groovy/au/org/ala/userdetails/LocationServiceSpec.groovy index 4c541580..65e84e42 100644 --- a/src/test/groovy/au/org/ala/userdetails/LocationServiceSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/LocationServiceSpec.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.testing.services.ServiceUnitTest diff --git a/src/test/groovy/au/org/ala/userdetails/RegistrationControllerSpec.groovy b/src/test/groovy/au/org/ala/userdetails/RegistrationControllerSpec.groovy index 47cd2ea3..fa6681ed 100644 --- a/src/test/groovy/au/org/ala/userdetails/RegistrationControllerSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/RegistrationControllerSpec.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.recaptcha.RecaptchaClient diff --git a/src/test/groovy/au/org/ala/userdetails/RoleBasedInterceptorSpec.groovy b/src/test/groovy/au/org/ala/userdetails/RoleBasedInterceptorSpec.groovy index b0339121..3782aca1 100644 --- a/src/test/groovy/au/org/ala/userdetails/RoleBasedInterceptorSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/RoleBasedInterceptorSpec.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.testing.gorm.DataTest diff --git a/src/test/groovy/au/org/ala/userdetails/UserDetailsControllerSpec.groovy b/src/test/groovy/au/org/ala/userdetails/UserDetailsControllerSpec.groovy index 6e620f7b..f47390c5 100644 --- a/src/test/groovy/au/org/ala/userdetails/UserDetailsControllerSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/UserDetailsControllerSpec.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.converters.JSON diff --git a/src/test/groovy/au/org/ala/userdetails/UserDetailsSpec.groovy b/src/test/groovy/au/org/ala/userdetails/UserDetailsSpec.groovy index e256d810..8d938beb 100644 --- a/src/test/groovy/au/org/ala/userdetails/UserDetailsSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/UserDetailsSpec.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import au.org.ala.userdetails.marshaller.UserMarshaller diff --git a/src/test/groovy/au/org/ala/userdetails/UserDetailsWebServicesInterceptorSpec.groovy b/src/test/groovy/au/org/ala/userdetails/UserDetailsWebServicesInterceptorSpec.groovy index c39ac86a..4aa6c028 100644 --- a/src/test/groovy/au/org/ala/userdetails/UserDetailsWebServicesInterceptorSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/UserDetailsWebServicesInterceptorSpec.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.testing.web.interceptor.InterceptorUnitTest diff --git a/src/test/groovy/au/org/ala/userdetails/UserRoleControllerSpec.groovy b/src/test/groovy/au/org/ala/userdetails/UserRoleControllerSpec.groovy index dcb36b17..315ac7c2 100644 --- a/src/test/groovy/au/org/ala/userdetails/UserRoleControllerSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/UserRoleControllerSpec.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails import grails.converters.JSON diff --git a/src/test/groovy/au/org/ala/userdetails/marshaller/UserMarshallerSpec.groovy b/src/test/groovy/au/org/ala/userdetails/marshaller/UserMarshallerSpec.groovy index 868b71af..83c3a3ac 100644 --- a/src/test/groovy/au/org/ala/userdetails/marshaller/UserMarshallerSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/marshaller/UserMarshallerSpec.groovy @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2022 Atlas of Living Australia + * All Rights Reserved. + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + */ + package au.org.ala.userdetails.marshaller import au.org.ala.userdetails.* From 2a566e73c3c83d6596483b5f067e114eba9ae4f0 Mon Sep 17 00:00:00 2001 From: yasima-csiro <72474143+yasima-csiro@users.noreply.github.com> Date: Mon, 25 Jul 2022 19:01:48 +1000 Subject: [PATCH 06/11] Feature/grails4 (#118) * Grails 5 Upgrade * Add OIDC authentication * Update RoleBasedInterceptor and UserDetailsWSInterceptor to accept JWTs using ala-ws-security-plugin * Add legacy fallback when no JWT provided * Add OpenAPI 3 support * Set properties to use OIDC and JWTs by default * Fix no transaction error for adding / removing roles * Add @Transactional to some controllers which don't use service * Fix JWT fallback when JWT not enabled * Add validation for UserDetailsController.search q parameter to match OpenAPI spec Co-authored-by: Dave Martin Co-authored-by: Simon Bear Co-authored-by: Bruce Hyslop --- .travis.yml | 6 +- build.gradle | 269 +- deps.txt | 7709 ----------------- gradle.properties | 12 +- gradle/wrapper/gradle-wrapper.jar | Bin 54212 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 59 +- gradlew.bat | 43 +- grails-app/assets/stylesheets/application.css | 35 + grails-app/conf/application.yml | 145 +- .../{logback.groovy => logback.old.groovy} | 1 - grails-app/conf/logback.xml | 17 + .../ala/userdetails/AdminController.groovy | 8 +- .../org/ala/userdetails/BaseController.groovy | 10 +- .../userdetails/ExternalSiteController.groovy | 60 + .../userdetails/MobileKeyController.groovy | 2 +- .../ala/userdetails/ProfileController.groovy | 17 +- .../ala/userdetails/PropertyController.groovy | 177 +- .../userdetails/RegistrationController.groovy | 12 +- .../userdetails/RoleBasedInterceptor.groovy | 23 +- .../au/org/ala/userdetails/UrlMappings.groovy | 7 + .../org/ala/userdetails/UserController.groovy | 4 +- .../userdetails/UserDetailsController.groovy | 248 + .../UserDetailsWebServicesInterceptor.groovy | 2 +- .../ala/userdetails/UserRoleController.groovy | 41 +- .../au/org/ala/userdetails/ApiKey.groovy | 23 + .../org/ala/userdetails/UserProperty.groovy | 3 + grails-app/i18n/messages.properties | 50 +- grails-app/i18n/messages_ca.properties | 15 + grails-app/i18n/messages_cs_CZ.properties | 17 +- grails-app/i18n/messages_da.properties | 15 + grails-app/i18n/messages_de.properties | 15 + grails-app/i18n/messages_de_AT.properties | 15 + grails-app/i18n/messages_de_LU.properties | 15 + grails-app/i18n/messages_es.properties | 19 +- grails-app/i18n/messages_fr.properties | 15 + grails-app/i18n/messages_it.properties | 15 + grails-app/i18n/messages_ja.properties | 15 + grails-app/i18n/messages_nl.properties | 15 + grails-app/i18n/messages_pt_BR.properties | 15 + grails-app/i18n/messages_pt_PT.properties | 15 + grails-app/i18n/messages_ru.properties | 15 + grails-app/i18n/messages_sv.properties | 15 + grails-app/i18n/messages_th.properties | 15 + grails-app/i18n/messages_zh_CN.properties | 15 + .../au/org/ala/userdetails/Application.groovy | 41 +- .../userdetails/UserDetailsCacheConfig.groovy | 29 - .../AuthorisedSystemService.groovy | 87 +- .../org/ala/userdetails/EmailService.groovy | 31 +- .../ala/userdetails/PasswordService.groovy | 2 +- .../au/org/ala/userdetails/UserService.groovy | 23 +- grails-app/views/admin/bulkUploadUsers.gsp | 18 +- grails-app/views/admin/exportUsers.gsp | 4 +- grails-app/views/admin/index.gsp | 4 +- grails-app/views/admin/loadUsersResults.gsp | 4 +- .../views/admin/resetPasswordForUser.gsp | 4 +- .../views/admin/userPasswordResetSuccess.gsp | 4 +- grails-app/views/authorisedSystem/create.gsp | 2 +- grails-app/views/authorisedSystem/edit.gsp | 2 +- grails-app/views/authorisedSystem/list.gsp | 2 +- grails-app/views/authorisedSystem/show.gsp | 2 +- grails-app/views/error.gsp | 2 +- grails-app/views/index.gsp | 8 +- grails-app/views/notFound.gsp | 2 +- grails-app/views/profile/flickrFail.gsp | 6 +- grails-app/views/profile/flickrSuccess.gsp | 4 +- grails-app/views/profile/inaturalistFail.gsp | 6 +- grails-app/views/profile/myprofile.gsp | 346 +- .../views/registration/accountActivated.gsp | 8 +- .../accountActivatedSuccessful.gsp | 6 +- .../views/registration/accountCreated.gsp | 6 +- .../views/registration/accountDisabled.gsp | 2 +- .../views/registration/accountError.gsp | 6 +- .../views/registration/authKeyExpired.gsp | 4 +- .../views/registration/createAccount.gsp | 51 +- .../views/registration/duplicateSubmit.gsp | 6 +- .../views/registration/forgottenPassword.gsp | 2 +- .../views/registration/passwordReset.gsp | 2 +- .../registration/passwordResetSuccess.gsp | 4 +- .../views/registration/startPasswordReset.gsp | 2 +- grails-app/views/role/create.gsp | 2 +- grails-app/views/role/edit.gsp | 2 +- grails-app/views/role/list.gsp | 2 +- grails-app/views/role/show.gsp | 2 +- grails-app/views/user/create.gsp | 2 +- grails-app/views/user/edit.gsp | 2 +- grails-app/views/user/list.gsp | 2 +- grails-app/views/user/show.gsp | 2 +- grails-app/views/userRole/create.gsp | 2 +- grails-app/views/userRole/edit.gsp | 2 +- grails-app/views/userRole/list.gsp | 2 +- grails-app/views/userRole/show.gsp | 2 +- grails-wrapper.jar | Bin 5463 -> 5507 bytes run.sh | 2 + .../au/org/ala/auth/PreAuthorise.groovy | 1 + src/main/resources/userdetails-ehcache.xml | 381 +- .../AuthorisedSystemServiceSpec.groovy | 66 + .../RoleBasedInterceptorSpec.groovy | 2 +- .../UserDetailsControllerSpec.groovy | 5 + ...erDetailsWebServicesInterceptorSpec.groovy | 22 +- .../userdetails/UserRoleControllerSpec.groovy | 18 +- 101 files changed, 1887 insertions(+), 8613 deletions(-) delete mode 100644 deps.txt rename grails-app/conf/{logback.groovy => logback.old.groovy} (99%) create mode 100644 grails-app/conf/logback.xml create mode 100644 grails-app/domain/au/org/ala/userdetails/ApiKey.groovy delete mode 100644 grails-app/init/au/org/ala/userdetails/UserDetailsCacheConfig.groovy create mode 100755 run.sh create mode 100644 src/test/groovy/au/org/ala/userdetails/AuthorisedSystemServiceSpec.groovy diff --git a/.travis.yml b/.travis.yml index e3840dbf..97aa62e4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: groovy jdk: - - openjdk8 + - openjdk11 sudo: false branches: only: @@ -8,7 +8,8 @@ branches: - master - hotfix - grails3 - - feature/.* + - experimental_jwt + - /^feature.*$/ before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ @@ -23,5 +24,6 @@ after_success: - '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && travis_retry ./gradlew publish' env: global: + - JAVA_TOOL_OPTIONS=-Dhttps.protocols=TLSv1.2 - secure: SXv/tzFEVilHYotkGZG7wSRM5fNSJmNaZX2x9o+AgLSZWFk2ZEqkgYP5utIMURghO+XW1i6GSBjpopcTttMvGC3+m5B6LLrmgSMiLRmzji34XfKpLysY3U7nU24F6aRDf+HvmyLtuj/tOXG+aD9odMjJ2rOONEEri6UcIP7bSOg= - secure: bulQ1yxzUFsM/VO/B/AM6WLRQ0ni+UJbEGKuxRB/3GfEHAnY5NLYX60t1gZY1Mv8Rg0t0/dRttniw7dVytvuIYMbI+gsY+eq6FTSgRjUUP3Y0hJd4B6JKnEQWPzR10s8HLiWdYIBUx3jL66kUhfQavgFjRnJKQ4Ql8pgSmez/9k= diff --git a/build.gradle b/build.gradle index d7ab9493..c68d575d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,160 +1,245 @@ -import static org.springframework.boot.gradle.SpringBootPluginExtension.LayoutType.* +//import static org.springframework.boot.gradle.SpringBootPluginExtension.LayoutType.* buildscript { repositories { - mavenLocal() maven { url "https://nexus.ala.org.au/content/groups/public/" } maven { url "https://repo.grails.org/grails/core" } } dependencies { - classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.15.1" - classpath "org.grails.plugins:hibernate5:${gormVersion-".RELEASE"}" + classpath "org.grails:grails-gradle-plugin:$grailsGradlePluginVersion" + classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.6" + classpath "org.grails.plugins:hibernate5:7.3.0" + classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.4.6" } } plugins { - id "com.gorylenko.gradle-git-properties" version "1.4.17" + id "com.gorylenko.gradle-git-properties" version "2.4.1" // TODO } -version "2.5.0-SNAPSHOT" +version "3.0.0-SNAPSHOT" group "au.org.ala" apply plugin:"eclipse" apply plugin:"idea" apply plugin:"war" apply plugin:"org.grails.grails-web" -apply plugin:"asset-pipeline" +apply plugin:"com.github.erdi.webdriver-binaries" +apply plugin:"com.bertramlabs.asset-pipeline" apply plugin:"org.grails.grails-gsp" +apply plugin:"maven-publish" -apply from: 'https://raw.githubusercontent.com/AtlasOfLivingAustralia/travis-build-configuration/master/travis_grails_publish.gradle' - -sourceCompatibility = 1.8 -targetCompatibility = 1.8 - -configurations.all { - resolutionStrategy.cacheChangingModulesFor 0, 'seconds' -} +sourceCompatibility = 1.11 +targetCompatibility = 1.11 repositories { mavenLocal() maven { url "https://nexus.ala.org.au/content/groups/public/" } maven { url "https://repo.grails.org/grails/core" } + mavenCentral() +} + +configurations { + developmentOnly + runtimeClasspath { + extendsFrom developmentOnly + } +} + +//grails { +// plugins { +// compile project(':openapi-plugin') +// } +//} + +configurations.all { + resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } dependencies { - compile "org.springframework.boot:spring-boot-starter-logging" - compile "org.springframework.boot:spring-boot-autoconfigure" - compile "org.grails:grails-core" - compile "org.springframework.boot:spring-boot-starter-actuator" - provided "org.springframework.boot:spring-boot-starter-tomcat" - compile "org.grails:grails-web-boot" - compile "org.grails:grails-logging" - compile "org.grails:grails-plugin-rest" - compile "org.grails:grails-plugin-databinding" - compile "org.grails:grails-plugin-i18n" - compile "org.grails:grails-plugin-services" - compile "org.grails:grails-plugin-url-mappings" - compile "org.grails:grails-plugin-interceptors" - compile "org.grails.plugins:cache" - compile "org.grails.plugins:async" - compile "org.grails.plugins:scaffolding" - compile "org.grails.plugins:hibernate5" - compile "org.hibernate:hibernate-core:5.1.16.Final" -// compile "org.hibernate:hibernate-ehcache:5.1.16.Final" - compile "org.grails.plugins:gsp" + developmentOnly("org.springframework.boot:spring-boot-devtools") + compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" + implementation "org.springframework.boot:spring-boot-starter-logging" + implementation "org.springframework.boot:spring-boot-starter-validation" + implementation "org.springframework.boot:spring-boot-autoconfigure" + implementation "org.grails:grails-core" + implementation "org.springframework.boot:spring-boot-starter-actuator" + implementation "org.springframework.boot:spring-boot-starter-tomcat" + implementation "org.grails:grails-web-boot" + implementation "org.grails:grails-logging" + implementation "org.grails:grails-plugin-rest" + implementation "org.grails:grails-plugin-databinding" + implementation "org.grails:grails-plugin-i18n" + implementation "org.grails:grails-plugin-services" + implementation "org.grails:grails-plugin-url-mappings" + implementation "org.grails:grails-plugin-interceptors" + implementation "org.grails.plugins:cache" + implementation "org.grails.plugins:async" + implementation "org.grails.plugins:scaffolding" + implementation "org.grails.plugins:events" + implementation "org.grails.plugins:hibernate5" + implementation "org.hibernate:hibernate-core:5.6.9.Final" + implementation "org.hibernate:hibernate-jcache" + runtimeOnly 'org.ehcache:ehcache' + implementation "org.grails.plugins:gsp" profile "org.grails.profiles:web" - runtime "org.glassfish.web:el-impl:2.1.2-b03" - runtime "org.apache.tomcat:tomcat-jdbc" - runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.15.1" - testCompile "org.grails:grails-gorm-testing-support" - testCompile "org.grails.plugins:geb:1.1.2" - testCompile "org.grails:grails-web-testing-support" - testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1" - testRuntime "net.sourceforge.htmlunit:htmlunit:2.18" - testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:2.47.1" + runtimeOnly "org.glassfish.web:el-impl:2.2.1-b05" +// runtimeOnly "com.h2database:h2" +// runtimeOnly "org.apache.tomcat:tomcat-jdbc" + runtimeOnly "javax.xml.bind:jaxb-api:2.3.1" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:3.4.6" + testImplementation "io.micronaut:micronaut-inject-groovy" + testImplementation "org.grails:grails-gorm-testing-support" + testImplementation "org.mockito:mockito-core" + testImplementation "org.grails:grails-web-testing-support" + testImplementation "org.grails.plugins:geb" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:4.0.0" + testImplementation "org.seleniumhq.selenium:selenium-api:4.0.0" + testImplementation "org.seleniumhq.selenium:selenium-support:4.0.0" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:4.0.0" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:4.0.0" + + // Groovy backwards compat + runtimeOnly 'org.codehaus.groovy:groovy-dateutil' // Grails plugin dependencies - runtime "org.grails.plugins:ala-bootstrap3:3.2.4" - compile "org.grails.plugins:ala-ws-plugin:2.0" - compile "org.grails.plugins:ala-auth:3.1.3" - compile "org.grails.plugins:ala-admin-plugin:2.1" - - compile 'org.grails.plugins:external-config:1.3.0' - compile 'org.grails.plugins:http-builder-helper:1.1.0' - compile "org.grails.plugins:csv:1.0.1" - compile 'org.grails.plugins:mail:2.0.0' - compile "org.grails.plugins:oauth:4.0.0" - compile "domurtag.plugins:grails-simple-captcha:1.0.0-grails3" - compile "org.grails.plugins:export:2.0.0" - compile 'org.grails.plugins:grails-markdown:3.0.0' -// compile 'org.grails.plugins:cache-ehcache:2.0.0.ALA' -// compile 'org.grails.plugins:cache:4.0.0.RC1' -// compile 'org.grails.plugins:cache-ehcache:3.0.0.M1' + implementation "org.grails.plugins:ala-bootstrap3:4.1.0" + implementation "org.grails.plugins:ala-ws-plugin:3.1.0" + implementation "org.grails.plugins:ala-ws-security-plugin:4.1.0" + implementation "org.grails.plugins:ala-auth:5.1.0" + implementation "org.grails.plugins:ala-admin-plugin:2.3.0" - // regular JAR dependencies + implementation 'dk.glasius:external-config:3.0.1' + implementation 'org.grails.plugins:http-builder-helper:1.1.0' + implementation "org.grails.plugins:csv:1.0.1" + implementation 'org.grails.plugins:mail:3.0.0' + + implementation "org.grails.plugins:oauth:4.0.0" + // transitive oauth plugin deps used in code + implementation "com.github.scribejava:scribejava-core:4.0.0" + implementation "com.github.scribejava:scribejava-apis:4.0.0" - runtime 'com.zaxxer:HikariCP:3.3.1' - runtime 'mysql:mysql-connector-java:8.0.25' - testRuntime "com.h2database:h2" - compile 'com.google.guava:guava:21.0' - compile 'org.apache.httpcomponents:httpcore:4.3.3' - compile 'org.apache.httpcomponents:httpclient:4.3.3' - compile 'org.apache.httpcomponents:httpmime:4.3.3' - compile 'org.apache.commons:commons-lang3:3.1' - compile 'commons-io:commons-io:2.6' - compile 'commons-beanutils:commons-beanutils:1.8.3' - compile 'org.mindrot:jbcrypt:0.4' - compile 'com.opencsv:opencsv:5.5.2' + implementation "domurtag.plugins:grails-simple-captcha:1.0.0-grails3" + implementation "org.grails.plugins:export:2.0.0" + implementation 'org.grails.plugins:grails-markdown:3.0.0' + // regular JAR dependencies - compile 'org.grails.plugins:spring-session-helper:1.1' - compile 'org.springframework.boot:spring-boot-starter-data-redis' - compile 'org.springframework.session:spring-session-data-redis' + implementation 'com.zaxxer:HikariCP:5.0.1' + implementation 'mysql:mysql-connector-java:8.0.29' + testRuntimeOnly "com.h2database:h2" + implementation 'com.google.guava:guava:21.0' + implementation 'org.apache.httpcomponents:httpcore:4.3.3' + implementation 'org.apache.httpcomponents:httpclient:4.3.3' + implementation 'org.apache.httpcomponents:httpmime:4.3.3' + implementation 'org.apache.commons:commons-lang3:3.12.0' + implementation 'commons-io:commons-io:2.6' + implementation 'commons-beanutils:commons-beanutils:1.8.3' + implementation 'org.mindrot:jbcrypt:0.4' + implementation 'com.opencsv:opencsv:5.5.2' + + implementation 'org.springframework.session:spring-session-data-mongodb' + implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' + implementation 'org.grails.plugins:spring-session-helper:2.0.1' + implementation 'org.mongodb:mongodb-driver-sync:4.6.0' // versions mismatch as transitive deps for + implementation 'org.mongodb:mongodb-driver-core:4.6.0' + implementation 'org.mongodb:bson:4.6.0' + +// implementation "com.auth0:java-jwt:3.18.2" +// implementation "com.auth0:jwks-rsa:0.20.0" // Spring Security to secure actuator endpoints - compile 'de.codecentric:spring-boot-admin-starter-client:1.5.3' - compile 'org.springframework.boot:spring-boot-starter-security' - compile 'org.springframework.security:spring-security-web' + // TODO Upgrade or decommission boot admin +// compile 'de.codecentric:spring-boot-admin-starter-client:2.6.2' +// compile 'org.springframework.boot:spring-boot-starter-security' +// compile 'org.springframework.security:spring-security-web' - compile('org.webjars.bower:chosen:1.8.3') - compile('org.webjars.bower:chosen-bootstrap:1.1.0') { + implementation('org.webjars.bower:chosen:1.8.3') + implementation('org.webjars.bower:chosen-bootstrap:1.1.0') { exclude module: 'jquery' // dependency from skin exclude module: 'bootstrap' // dependency from skin } - testCompile('com.squareup.retrofit2:retrofit-mock:2.4.0') + implementation('au.org.ala.plugins:openapi:1.0.0') + + testImplementation('com.squareup.retrofit2:retrofit-mock:2.9.0') } springBoot { buildInfo() - layout = WAR } bootRun { - jvmArgs('-Dspring.output.ansi.enabled=always') - addResources = true + ignoreExitValue true + jvmArgs( + '-Dspring.output.ansi.enabled=always', + '-noverify', + '-XX:TieredStopAtLevel=1', + '-Xmx1024m') + sourceResources sourceSets.main String springProfilesActive = 'spring.profiles.active' systemProperty springProfilesActive, System.getProperty(springProfilesActive) } -bootRepackage { - enabled = true - executable = true +bootWar { + launchScript() classifier = 'exec' } +tasks.withType(GroovyCompile) { + configure(groovyOptions) { + forkOptions.jvmArgs = ['-Xmx1024m'] + } +} + +tasks.withType(Test) { + useJUnitPlatform() +} + +webdriverBinaries { + if (!System.getenv().containsKey('GITHUB_ACTIONS')) { + chromedriver { + version = '2.45.0' + fallbackTo32Bit = true + } + geckodriver '0.30.0' + } +} + tasks.withType(Test) { systemProperty "geb.env", System.getProperty('geb.env') systemProperty "geb.build.reportsDir", reporting.file("geb/integrationTest") - systemProperty "webdriver.chrome.driver", System.getProperty('webdriver.chrome.driver') - systemProperty "webdriver.gecko.driver", System.getProperty('webdriver.gecko.driver') + if (!System.getenv().containsKey('GITHUB_ACTIONS')) { + systemProperty 'webdriver.chrome.driver', System.getProperty('webdriver.chrome.driver') + systemProperty 'webdriver.gecko.driver', System.getProperty('webdriver.gecko.driver') + } else { + systemProperty 'webdriver.chrome.driver', "${System.getenv('CHROMEWEBDRIVER')}/chromedriver" + systemProperty 'webdriver.gecko.driver', "${System.getenv('GECKOWEBDRIVER')}/geckodriver" + } } + assets { minifyJs = true minifyCss = true - includes = ["fonts/*"] +} + +publishing { + repositories { + maven { + name 'Nexus' + url "https://nexus.ala.org.au/content/repositories/${project.version.endsWith('-SNAPSHOT') ? 'snapshots' : 'releases' }" + credentials { + username = System.getenv('TRAVIS_DEPLOY_USERNAME') + password = System.getenv('TRAVIS_DEPLOY_PASSWORD') + } + } + } + publications { + mavenJar(MavenPublication) { + artifact bootWar + } + } } diff --git a/deps.txt b/deps.txt deleted file mode 100644 index d4cec677..00000000 --- a/deps.txt +++ /dev/null @@ -1,7709 +0,0 @@ -:dependencies - ------------------------------------------------------------- -Root project ------------------------------------------------------------- - -agent -\--- org.springframework:springloaded: -> 1.2.7.RELEASE - -apiElements - API elements for main. (n) -No dependencies - -archives - Configuration for archive artifacts. -No dependencies - -assets -No dependencies - -compile - Dependencies for source set 'main' (deprecated, use 'implementation ' instead). -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.2 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -\--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE - +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 - +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 - \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 - \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 - -compileClasspath - Compile classpath for source set 'main'. -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.2 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -\--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE - +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 - +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 - \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 - \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 - -compileOnly - Compile only dependencies for source set 'main'. -No dependencies - -console -\--- org.grails:grails-console: -> 3.2.11 - +--- org.codehaus.groovy:groovy:2.4.11 - +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 - +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 - | \--- org.slf4j:slf4j-api:1.7.25 - +--- org.grails:grails-core:3.2.11 - | +--- org.codehaus.groovy:groovy:2.4.11 - | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 - | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) - | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final - | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 - | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE - | | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE - | | \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE - | | +--- org.springframework:spring-aop:4.3.9.RELEASE - | | | +--- org.springframework:spring-beans:4.3.9.RELEASE - | | | | \--- org.springframework:spring-core:4.3.9.RELEASE - | | | \--- org.springframework:spring-core:4.3.9.RELEASE - | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) - | | +--- org.springframework:spring-core:4.3.9.RELEASE - | | \--- org.springframework:spring-expression:4.3.9.RELEASE - | | \--- org.springframework:spring-core:4.3.9.RELEASE - | +--- org.springframework:spring-core:4.3.9.RELEASE - | +--- org.springframework:spring-tx:4.3.9.RELEASE - | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) - | | \--- org.springframework:spring-core:4.3.9.RELEASE - | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) - | +--- org.springframework:spring-context:4.3.9.RELEASE (*) - | +--- org.grails:grails-bootstrap:3.2.11 - | | +--- org.codehaus.groovy:groovy:2.4.11 - | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 - | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) - | | +--- org.codehaus.groovy:groovy-xml:2.4.11 - | | | \--- org.codehaus.groovy:groovy:2.4.11 - | | +--- org.codehaus.groovy:groovy-templates:2.4.11 - | | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) - | | | \--- org.codehaus.groovy:groovy:2.4.11 - | | \--- org.yaml:snakeyaml:1.14 -> 1.17 - | +--- org.grails:grails-spring:3.2.11 - | | +--- org.codehaus.groovy:groovy:2.4.11 - | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 - | | \--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) - | \--- xalan:serializer:2.7.2 - +--- org.codehaus.groovy:groovy-console:2.4.11 - | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) - | +--- org.codehaus.groovy:groovy-swing:2.4.11 - | | \--- org.codehaus.groovy:groovy:2.4.11 - | \--- org.codehaus.groovy:groovy:2.4.11 - +--- org.codehaus.groovy:groovy-groovysh:2.4.11 -> 2.4.10 - | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 - | +--- org.codehaus.groovy:groovy-console:2.4.10 -> 2.4.11 (*) - | \--- jline:jline:2.12 - +--- org.fusesource.jansi:jansi:1.14 - +--- jline:jline:2.12 - +--- net.java.dev.jna:jna:4.2.2 - +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) - +--- org.springframework:spring-test:4.3.9.RELEASE - | \--- org.springframework:spring-core:4.3.9.RELEASE - +--- org.springframework:spring-web:4.3.9.RELEASE - | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) - | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) - | +--- org.springframework:spring-context:4.3.9.RELEASE (*) - | \--- org.springframework:spring-core:4.3.9.RELEASE - \--- javax.servlet:javax.servlet-api:3.0.1 -> 3.1.0 - -default - Configuration for default artifacts. -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| +--- com.google.javascript:closure-compiler-unshaded:v20160713 -| | +--- com.google.javascript:closure-compiler-externs:v20160713 -| | +--- args4j:args4j:2.0.26 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | +--- com.google.protobuf:protobuf-java:2.5.0 -| | +--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | \--- com.google.code.findbugs:jsr305:1.3.9 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.1 (*) -+--- org.grails.plugins:ala-bootstrap3:3.0.0-SNAPSHOT -| +--- au.org.ala:ala-cas-client:2.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -\--- mysql:mysql-connector-java:5.1.42 - -gspCompile -\--- javax.servlet:javax.servlet-api:3.1.0 - -implementation - Implementation only dependencies for source set 'main'. (n) -No dependencies - -integrationTestCompile - Dependencies for source set 'integration test' (deprecated, use 'integrationTestImplementation ' instead). -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.2 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- org.grails:grails-plugin-testing: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.grails:grails-test:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE -| | | \--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-test:2.4.11 -> 2.4.10 -| | +--- junit:junit:4.12 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.spockframework:spock-core:1.0-groovy-2.4 -| | \--- org.objenesis:objenesis:1.4 -> 2.1 -| +--- org.grails:grails-logging:3.2.11 (*) -| +--- org.grails:grails-async:3.2.11 (*) -| +--- org.springframework:spring-test:4.3.9.RELEASE -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework.boot:spring-boot-starter-test:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test-autoconfigure:1.4.6.RELEASE -| | | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- com.jayway.jsonpath:json-path:2.2.0 -| | | +--- net.minidev:json-smart:2.2.1 -| | | | \--- net.minidev:accessors-smart:1.1 -| | | | \--- org.ow2.asm:asm:5.0.3 -| | | \--- org.slf4j:slf4j-api:1.7.16 -> 1.7.25 -| | +--- junit:junit:4.12 (*) -| | +--- org.assertj:assertj-core:2.5.0 -| | +--- org.mockito:mockito-core:1.10.19 -| | | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 -| | | \--- org.objenesis:objenesis:2.1 -| | +--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.hamcrest:hamcrest-library:1.3 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.skyscreamer:jsonassert:1.3.0 -| | | \--- org.json:json:20090211 -> 20140107 -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-test:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.spockframework:spock-spring:1.0-groovy-2.4 -| +--- org.spockframework:spock-core:1.0-groovy-2.4 -| +--- junit:junit:4.12 (*) -| \--- cglib:cglib:2.2.2 -| \--- asm:asm:3.3.1 -\--- org.grails.plugins:geb: -> 1.0.2 - +--- org.gebish:geb-spock:0.12.2 - | \--- org.gebish:geb-core:0.12.2 - | +--- org.gebish:geb-waiting:0.12.2 - | | +--- org.gebish:geb-exceptions:0.12.2 - | | \--- org.gebish:geb-implicit-assertions:0.12.2 - | \--- org.gebish:geb-ast:0.12.2 - \--- org.seleniumhq.selenium:selenium-support:2.47.1 -> 2.53.1 - \--- org.seleniumhq.selenium:selenium-remote-driver:2.53.1 - +--- cglib:cglib-nodep:2.1_3 - +--- com.google.code.gson:gson:2.3.1 -> 2.7 - +--- org.seleniumhq.selenium:selenium-api:2.53.1 - | +--- com.google.guava:guava:19.0 -> 21.0 - | \--- com.google.code.gson:gson:2.3.1 -> 2.7 - +--- org.apache.httpcomponents:httpclient:4.5.1 -> 4.3.3 (*) - +--- com.google.guava:guava:19.0 -> 21.0 - +--- org.apache.commons:commons-exec:1.3 - +--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 - \--- net.java.dev.jna:jna-platform:4.1.0 - \--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 - -integrationTestCompileClasspath - Compile classpath for source set 'integration test'. -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.2 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- org.grails:grails-plugin-testing: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.grails:grails-test:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE -| | | \--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-test:2.4.11 -> 2.4.10 -| | +--- junit:junit:4.12 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.spockframework:spock-core:1.0-groovy-2.4 -| | \--- org.objenesis:objenesis:1.4 -> 2.1 -| +--- org.grails:grails-logging:3.2.11 (*) -| +--- org.grails:grails-async:3.2.11 (*) -| +--- org.springframework:spring-test:4.3.9.RELEASE -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework.boot:spring-boot-starter-test:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test-autoconfigure:1.4.6.RELEASE -| | | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- com.jayway.jsonpath:json-path:2.2.0 -| | | +--- net.minidev:json-smart:2.2.1 -| | | | \--- net.minidev:accessors-smart:1.1 -| | | | \--- org.ow2.asm:asm:5.0.3 -| | | \--- org.slf4j:slf4j-api:1.7.16 -> 1.7.25 -| | +--- junit:junit:4.12 (*) -| | +--- org.assertj:assertj-core:2.5.0 -| | +--- org.mockito:mockito-core:1.10.19 -| | | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 -| | | \--- org.objenesis:objenesis:2.1 -| | +--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.hamcrest:hamcrest-library:1.3 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.skyscreamer:jsonassert:1.3.0 -| | | \--- org.json:json:20090211 -> 20140107 -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-test:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.spockframework:spock-spring:1.0-groovy-2.4 -| +--- org.spockframework:spock-core:1.0-groovy-2.4 -| +--- junit:junit:4.12 (*) -| \--- cglib:cglib:2.2.2 -| \--- asm:asm:3.3.1 -\--- org.grails.plugins:geb: -> 1.0.2 - +--- org.gebish:geb-spock:0.12.2 - | \--- org.gebish:geb-core:0.12.2 - | +--- org.gebish:geb-waiting:0.12.2 - | | +--- org.gebish:geb-exceptions:0.12.2 - | | \--- org.gebish:geb-implicit-assertions:0.12.2 - | \--- org.gebish:geb-ast:0.12.2 - \--- org.seleniumhq.selenium:selenium-support:2.47.1 -> 2.53.1 - \--- org.seleniumhq.selenium:selenium-remote-driver:2.53.1 - +--- cglib:cglib-nodep:2.1_3 - +--- com.google.code.gson:gson:2.3.1 -> 2.7 - +--- org.seleniumhq.selenium:selenium-api:2.53.1 - | +--- com.google.guava:guava:19.0 -> 21.0 - | \--- com.google.code.gson:gson:2.3.1 -> 2.7 - +--- org.apache.httpcomponents:httpclient:4.5.1 -> 4.3.3 (*) - +--- com.google.guava:guava:19.0 -> 21.0 - +--- org.apache.commons:commons-exec:1.3 - +--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 - \--- net.java.dev.jna:jna-platform:4.1.0 - \--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 - -integrationTestCompileOnly - Compile only dependencies for source set 'integration test'. -No dependencies - -integrationTestImplementation - Implementation only dependencies for source set 'integration test'. (n) -No dependencies - -integrationTestRuntime - Runtime dependencies for source set 'integration test' (deprecated, use 'integrationTestRuntimeOnly ' instead). -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -| \--- xml-apis:xml-apis:1.3.04 -> 1.4.01 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -> 2.4 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| +--- com.google.javascript:closure-compiler-unshaded:v20160713 -| | +--- com.google.javascript:closure-compiler-externs:v20160713 -| | +--- args4j:args4j:2.0.26 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | +--- com.google.protobuf:protobuf-java:2.5.0 -| | +--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | \--- com.google.code.findbugs:jsr305:1.3.9 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.1 (*) -+--- org.grails.plugins:ala-bootstrap3:3.0.0-SNAPSHOT -| +--- au.org.ala:ala-cas-client:2.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- mysql:mysql-connector-java:5.1.42 -+--- org.grails:grails-plugin-testing: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.grails:grails-test:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE -| | | \--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-test:2.4.11 -> 2.4.10 -| | +--- junit:junit:4.12 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.spockframework:spock-core:1.0-groovy-2.4 -| | \--- org.objenesis:objenesis:1.4 -> 2.1 -| +--- org.grails:grails-logging:3.2.11 (*) -| +--- org.grails:grails-async:3.2.11 (*) -| +--- org.springframework:spring-test:4.3.9.RELEASE -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework.boot:spring-boot-starter-test:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test-autoconfigure:1.4.6.RELEASE -| | | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- com.jayway.jsonpath:json-path:2.2.0 -| | | +--- net.minidev:json-smart:2.2.1 -| | | | \--- net.minidev:accessors-smart:1.1 -| | | | \--- org.ow2.asm:asm:5.0.3 -| | | \--- org.slf4j:slf4j-api:1.7.16 -> 1.7.25 -| | +--- junit:junit:4.12 (*) -| | +--- org.assertj:assertj-core:2.5.0 -| | +--- org.mockito:mockito-core:1.10.19 -| | | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 -| | | \--- org.objenesis:objenesis:2.1 -| | +--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.hamcrest:hamcrest-library:1.3 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.skyscreamer:jsonassert:1.3.0 -| | | \--- org.json:json:20090211 -> 20140107 -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-test:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.spockframework:spock-spring:1.0-groovy-2.4 -| +--- org.spockframework:spock-core:1.0-groovy-2.4 -| +--- junit:junit:4.12 (*) -| \--- cglib:cglib:2.2.2 -| \--- asm:asm:3.3.1 -+--- org.grails.plugins:geb: -> 1.0.2 -| +--- org.gebish:geb-spock:0.12.2 -| | \--- org.gebish:geb-core:0.12.2 -| | +--- org.gebish:geb-waiting:0.12.2 -| | | +--- org.gebish:geb-exceptions:0.12.2 -| | | \--- org.gebish:geb-implicit-assertions:0.12.2 -| | \--- org.gebish:geb-ast:0.12.2 -| \--- org.seleniumhq.selenium:selenium-support:2.47.1 -> 2.53.1 -| \--- org.seleniumhq.selenium:selenium-remote-driver:2.53.1 -| +--- cglib:cglib-nodep:2.1_3 -| +--- com.google.code.gson:gson:2.3.1 -> 2.7 -| +--- org.seleniumhq.selenium:selenium-api:2.53.1 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | \--- com.google.code.gson:gson:2.3.1 -> 2.7 -| +--- org.apache.httpcomponents:httpclient:4.5.1 -> 4.3.3 (*) -| +--- com.google.guava:guava:19.0 -> 21.0 -| +--- org.apache.commons:commons-exec:1.3 -| +--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 -| \--- net.java.dev.jna:jna-platform:4.1.0 -| \--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 -+--- org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1 -| +--- org.seleniumhq.selenium:selenium-remote-driver:2.47.1 -> 2.53.1 (*) -| +--- net.sourceforge.htmlunit:htmlunit:2.17 -> 2.18 -| | +--- xalan:xalan:2.7.2 -| | | \--- xalan:serializer:2.7.2 (*) -| | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | +--- org.apache.commons:commons-lang3:3.4 -> 3.1 -| | +--- org.apache.httpcomponents:httpclient:4.5 -> 4.3.3 (*) -| | +--- org.apache.httpcomponents:httpmime:4.5 -> 4.3.3 (*) -| | +--- commons-codec:commons-codec:1.10 -| | +--- net.sourceforge.htmlunit:htmlunit-core-js:2.17 -| | +--- xerces:xercesImpl:2.11.0 (*) -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.22 (*) -| | +--- net.sourceforge.cssparser:cssparser:0.9.16 -| | | \--- org.w3c.css:sac:1.3 -| | +--- commons-io:commons-io:2.4 -| | +--- commons-logging:commons-logging:1.2 -| | \--- org.eclipse.jetty.websocket:websocket-client:9.2.12.v20150709 -> 9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-io:9.3.18.v20170406 -| | | \--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | \--- org.eclipse.jetty.websocket:websocket-common:9.3.18.v20170406 -| | +--- org.eclipse.jetty.websocket:websocket-api:9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | \--- org.eclipse.jetty:jetty-io:9.3.18.v20170406 (*) -| \--- org.apache.httpcomponents:httpclient:4.4.1 -> 4.3.3 (*) -+--- net.sourceforge.htmlunit:htmlunit:2.18 (*) -\--- com.h2database:h2: -> 1.4.194 - -integrationTestRuntimeClasspath - Runtime classpath of source set 'integration test'. -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -| \--- xml-apis:xml-apis:1.3.04 -> 1.4.01 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -> 2.4 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| +--- com.google.javascript:closure-compiler-unshaded:v20160713 -| | +--- com.google.javascript:closure-compiler-externs:v20160713 -| | +--- args4j:args4j:2.0.26 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | +--- com.google.protobuf:protobuf-java:2.5.0 -| | +--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | \--- com.google.code.findbugs:jsr305:1.3.9 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.1 (*) -+--- org.grails.plugins:ala-bootstrap3:3.0.0-SNAPSHOT -| +--- au.org.ala:ala-cas-client:2.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- mysql:mysql-connector-java:5.1.42 -+--- org.grails:grails-plugin-testing: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.grails:grails-test:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE -| | | \--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-test:2.4.11 -> 2.4.10 -| | +--- junit:junit:4.12 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.spockframework:spock-core:1.0-groovy-2.4 -| | \--- org.objenesis:objenesis:1.4 -> 2.1 -| +--- org.grails:grails-logging:3.2.11 (*) -| +--- org.grails:grails-async:3.2.11 (*) -| +--- org.springframework:spring-test:4.3.9.RELEASE -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework.boot:spring-boot-starter-test:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test-autoconfigure:1.4.6.RELEASE -| | | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- com.jayway.jsonpath:json-path:2.2.0 -| | | +--- net.minidev:json-smart:2.2.1 -| | | | \--- net.minidev:accessors-smart:1.1 -| | | | \--- org.ow2.asm:asm:5.0.3 -| | | \--- org.slf4j:slf4j-api:1.7.16 -> 1.7.25 -| | +--- junit:junit:4.12 (*) -| | +--- org.assertj:assertj-core:2.5.0 -| | +--- org.mockito:mockito-core:1.10.19 -| | | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 -| | | \--- org.objenesis:objenesis:2.1 -| | +--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.hamcrest:hamcrest-library:1.3 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.skyscreamer:jsonassert:1.3.0 -| | | \--- org.json:json:20090211 -> 20140107 -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-test:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.spockframework:spock-spring:1.0-groovy-2.4 -| +--- org.spockframework:spock-core:1.0-groovy-2.4 -| +--- junit:junit:4.12 (*) -| \--- cglib:cglib:2.2.2 -| \--- asm:asm:3.3.1 -+--- org.grails.plugins:geb: -> 1.0.2 -| +--- org.gebish:geb-spock:0.12.2 -| | \--- org.gebish:geb-core:0.12.2 -| | +--- org.gebish:geb-waiting:0.12.2 -| | | +--- org.gebish:geb-exceptions:0.12.2 -| | | \--- org.gebish:geb-implicit-assertions:0.12.2 -| | \--- org.gebish:geb-ast:0.12.2 -| \--- org.seleniumhq.selenium:selenium-support:2.47.1 -> 2.53.1 -| \--- org.seleniumhq.selenium:selenium-remote-driver:2.53.1 -| +--- cglib:cglib-nodep:2.1_3 -| +--- com.google.code.gson:gson:2.3.1 -> 2.7 -| +--- org.seleniumhq.selenium:selenium-api:2.53.1 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | \--- com.google.code.gson:gson:2.3.1 -> 2.7 -| +--- org.apache.httpcomponents:httpclient:4.5.1 -> 4.3.3 (*) -| +--- com.google.guava:guava:19.0 -> 21.0 -| +--- org.apache.commons:commons-exec:1.3 -| +--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 -| \--- net.java.dev.jna:jna-platform:4.1.0 -| \--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 -+--- org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1 -| +--- org.seleniumhq.selenium:selenium-remote-driver:2.47.1 -> 2.53.1 (*) -| +--- net.sourceforge.htmlunit:htmlunit:2.17 -> 2.18 -| | +--- xalan:xalan:2.7.2 -| | | \--- xalan:serializer:2.7.2 (*) -| | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | +--- org.apache.commons:commons-lang3:3.4 -> 3.1 -| | +--- org.apache.httpcomponents:httpclient:4.5 -> 4.3.3 (*) -| | +--- org.apache.httpcomponents:httpmime:4.5 -> 4.3.3 (*) -| | +--- commons-codec:commons-codec:1.10 -| | +--- net.sourceforge.htmlunit:htmlunit-core-js:2.17 -| | +--- xerces:xercesImpl:2.11.0 (*) -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.22 (*) -| | +--- net.sourceforge.cssparser:cssparser:0.9.16 -| | | \--- org.w3c.css:sac:1.3 -| | +--- commons-io:commons-io:2.4 -| | +--- commons-logging:commons-logging:1.2 -| | \--- org.eclipse.jetty.websocket:websocket-client:9.2.12.v20150709 -> 9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-io:9.3.18.v20170406 -| | | \--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | \--- org.eclipse.jetty.websocket:websocket-common:9.3.18.v20170406 -| | +--- org.eclipse.jetty.websocket:websocket-api:9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | \--- org.eclipse.jetty:jetty-io:9.3.18.v20170406 (*) -| \--- org.apache.httpcomponents:httpclient:4.4.1 -> 4.3.3 (*) -+--- net.sourceforge.htmlunit:htmlunit:2.18 (*) -\--- com.h2database:h2: -> 1.4.194 - -integrationTestRuntimeOnly - Runtime only dependencies for source set 'integration test'. (n) -No dependencies - -profile -\--- org.grails.profiles:web: -> 3.2.1 - \--- org.grails.profiles:base:3.2.1 -> 3.2.8 - -provided - much like compile, but indicates that you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive. -\--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE - +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 - +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 - \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 - \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 - -providedCompile - Additional compile classpath for libraries that should not be part of the WAR archive. -No dependencies - -providedRuntime - Additional runtime classpath for libraries that should not be part of the WAR archive. -No dependencies - -runtime - Runtime dependencies for source set 'main' (deprecated, use 'runtimeOnly ' instead). -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| +--- com.google.javascript:closure-compiler-unshaded:v20160713 -| | +--- com.google.javascript:closure-compiler-externs:v20160713 -| | +--- args4j:args4j:2.0.26 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | +--- com.google.protobuf:protobuf-java:2.5.0 -| | +--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | \--- com.google.code.findbugs:jsr305:1.3.9 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.1 (*) -+--- org.grails.plugins:ala-bootstrap3:3.0.0-SNAPSHOT -| +--- au.org.ala:ala-cas-client:2.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -\--- mysql:mysql-connector-java:5.1.42 - -runtimeClasspath - Runtime classpath of source set 'main'. -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| +--- com.google.javascript:closure-compiler-unshaded:v20160713 -| | +--- com.google.javascript:closure-compiler-externs:v20160713 -| | +--- args4j:args4j:2.0.26 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | +--- com.google.protobuf:protobuf-java:2.5.0 -| | +--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | \--- com.google.code.findbugs:jsr305:1.3.9 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.1 (*) -+--- org.grails.plugins:ala-bootstrap3:3.0.0-SNAPSHOT -| +--- au.org.ala:ala-cas-client:2.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -\--- mysql:mysql-connector-java:5.1.42 - -runtimeElements - Elements of runtime for main. (n) -No dependencies - -runtimeOnly - Runtime only dependencies for source set 'main'. (n) -No dependencies - -testCompile - Dependencies for source set 'test' (deprecated, use 'testImplementation ' instead). -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.2 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- org.grails:grails-plugin-testing: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.grails:grails-test:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE -| | | \--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-test:2.4.11 -> 2.4.10 -| | +--- junit:junit:4.12 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.spockframework:spock-core:1.0-groovy-2.4 -| | \--- org.objenesis:objenesis:1.4 -> 2.1 -| +--- org.grails:grails-logging:3.2.11 (*) -| +--- org.grails:grails-async:3.2.11 (*) -| +--- org.springframework:spring-test:4.3.9.RELEASE -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework.boot:spring-boot-starter-test:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test-autoconfigure:1.4.6.RELEASE -| | | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- com.jayway.jsonpath:json-path:2.2.0 -| | | +--- net.minidev:json-smart:2.2.1 -| | | | \--- net.minidev:accessors-smart:1.1 -| | | | \--- org.ow2.asm:asm:5.0.3 -| | | \--- org.slf4j:slf4j-api:1.7.16 -> 1.7.25 -| | +--- junit:junit:4.12 (*) -| | +--- org.assertj:assertj-core:2.5.0 -| | +--- org.mockito:mockito-core:1.10.19 -| | | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 -| | | \--- org.objenesis:objenesis:2.1 -| | +--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.hamcrest:hamcrest-library:1.3 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.skyscreamer:jsonassert:1.3.0 -| | | \--- org.json:json:20090211 -> 20140107 -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-test:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.spockframework:spock-spring:1.0-groovy-2.4 -| +--- org.spockframework:spock-core:1.0-groovy-2.4 -| +--- junit:junit:4.12 (*) -| \--- cglib:cglib:2.2.2 -| \--- asm:asm:3.3.1 -\--- org.grails.plugins:geb: -> 1.0.2 - +--- org.gebish:geb-spock:0.12.2 - | \--- org.gebish:geb-core:0.12.2 - | +--- org.gebish:geb-waiting:0.12.2 - | | +--- org.gebish:geb-exceptions:0.12.2 - | | \--- org.gebish:geb-implicit-assertions:0.12.2 - | \--- org.gebish:geb-ast:0.12.2 - \--- org.seleniumhq.selenium:selenium-support:2.47.1 -> 2.53.1 - \--- org.seleniumhq.selenium:selenium-remote-driver:2.53.1 - +--- cglib:cglib-nodep:2.1_3 - +--- com.google.code.gson:gson:2.3.1 -> 2.7 - +--- org.seleniumhq.selenium:selenium-api:2.53.1 - | +--- com.google.guava:guava:19.0 -> 21.0 - | \--- com.google.code.gson:gson:2.3.1 -> 2.7 - +--- org.apache.httpcomponents:httpclient:4.5.1 -> 4.3.3 (*) - +--- com.google.guava:guava:19.0 -> 21.0 - +--- org.apache.commons:commons-exec:1.3 - +--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 - \--- net.java.dev.jna:jna-platform:4.1.0 - \--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 - -testCompileClasspath - Compile classpath for source set 'test'. -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.2 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- org.grails:grails-plugin-testing: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.grails:grails-test:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE -| | | \--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-test:2.4.11 -> 2.4.10 -| | +--- junit:junit:4.12 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.spockframework:spock-core:1.0-groovy-2.4 -| | \--- org.objenesis:objenesis:1.4 -> 2.1 -| +--- org.grails:grails-logging:3.2.11 (*) -| +--- org.grails:grails-async:3.2.11 (*) -| +--- org.springframework:spring-test:4.3.9.RELEASE -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework.boot:spring-boot-starter-test:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test-autoconfigure:1.4.6.RELEASE -| | | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- com.jayway.jsonpath:json-path:2.2.0 -| | | +--- net.minidev:json-smart:2.2.1 -| | | | \--- net.minidev:accessors-smart:1.1 -| | | | \--- org.ow2.asm:asm:5.0.3 -| | | \--- org.slf4j:slf4j-api:1.7.16 -> 1.7.25 -| | +--- junit:junit:4.12 (*) -| | +--- org.assertj:assertj-core:2.5.0 -| | +--- org.mockito:mockito-core:1.10.19 -| | | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 -| | | \--- org.objenesis:objenesis:2.1 -| | +--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.hamcrest:hamcrest-library:1.3 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.skyscreamer:jsonassert:1.3.0 -| | | \--- org.json:json:20090211 -> 20140107 -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-test:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.spockframework:spock-spring:1.0-groovy-2.4 -| +--- org.spockframework:spock-core:1.0-groovy-2.4 -| +--- junit:junit:4.12 (*) -| \--- cglib:cglib:2.2.2 -| \--- asm:asm:3.3.1 -\--- org.grails.plugins:geb: -> 1.0.2 - +--- org.gebish:geb-spock:0.12.2 - | \--- org.gebish:geb-core:0.12.2 - | +--- org.gebish:geb-waiting:0.12.2 - | | +--- org.gebish:geb-exceptions:0.12.2 - | | \--- org.gebish:geb-implicit-assertions:0.12.2 - | \--- org.gebish:geb-ast:0.12.2 - \--- org.seleniumhq.selenium:selenium-support:2.47.1 -> 2.53.1 - \--- org.seleniumhq.selenium:selenium-remote-driver:2.53.1 - +--- cglib:cglib-nodep:2.1_3 - +--- com.google.code.gson:gson:2.3.1 -> 2.7 - +--- org.seleniumhq.selenium:selenium-api:2.53.1 - | +--- com.google.guava:guava:19.0 -> 21.0 - | \--- com.google.code.gson:gson:2.3.1 -> 2.7 - +--- org.apache.httpcomponents:httpclient:4.5.1 -> 4.3.3 (*) - +--- com.google.guava:guava:19.0 -> 21.0 - +--- org.apache.commons:commons-exec:1.3 - +--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 - \--- net.java.dev.jna:jna-platform:4.1.0 - \--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 - -testCompileOnly - Compile only dependencies for source set 'test'. -No dependencies - -testImplementation - Implementation only dependencies for source set 'test'. (n) -No dependencies - -testRuntime - Runtime dependencies for source set 'test' (deprecated, use 'testRuntimeOnly ' instead). -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -| \--- xml-apis:xml-apis:1.3.04 -> 1.4.01 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -> 2.4 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| +--- com.google.javascript:closure-compiler-unshaded:v20160713 -| | +--- com.google.javascript:closure-compiler-externs:v20160713 -| | +--- args4j:args4j:2.0.26 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | +--- com.google.protobuf:protobuf-java:2.5.0 -| | +--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | \--- com.google.code.findbugs:jsr305:1.3.9 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.1 (*) -+--- org.grails.plugins:ala-bootstrap3:3.0.0-SNAPSHOT -| +--- au.org.ala:ala-cas-client:2.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- mysql:mysql-connector-java:5.1.42 -+--- org.grails:grails-plugin-testing: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.grails:grails-test:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE -| | | \--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-test:2.4.11 -> 2.4.10 -| | +--- junit:junit:4.12 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.spockframework:spock-core:1.0-groovy-2.4 -| | \--- org.objenesis:objenesis:1.4 -> 2.1 -| +--- org.grails:grails-logging:3.2.11 (*) -| +--- org.grails:grails-async:3.2.11 (*) -| +--- org.springframework:spring-test:4.3.9.RELEASE -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework.boot:spring-boot-starter-test:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test-autoconfigure:1.4.6.RELEASE -| | | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- com.jayway.jsonpath:json-path:2.2.0 -| | | +--- net.minidev:json-smart:2.2.1 -| | | | \--- net.minidev:accessors-smart:1.1 -| | | | \--- org.ow2.asm:asm:5.0.3 -| | | \--- org.slf4j:slf4j-api:1.7.16 -> 1.7.25 -| | +--- junit:junit:4.12 (*) -| | +--- org.assertj:assertj-core:2.5.0 -| | +--- org.mockito:mockito-core:1.10.19 -| | | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 -| | | \--- org.objenesis:objenesis:2.1 -| | +--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.hamcrest:hamcrest-library:1.3 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.skyscreamer:jsonassert:1.3.0 -| | | \--- org.json:json:20090211 -> 20140107 -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-test:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.spockframework:spock-spring:1.0-groovy-2.4 -| +--- org.spockframework:spock-core:1.0-groovy-2.4 -| +--- junit:junit:4.12 (*) -| \--- cglib:cglib:2.2.2 -| \--- asm:asm:3.3.1 -+--- org.grails.plugins:geb: -> 1.0.2 -| +--- org.gebish:geb-spock:0.12.2 -| | \--- org.gebish:geb-core:0.12.2 -| | +--- org.gebish:geb-waiting:0.12.2 -| | | +--- org.gebish:geb-exceptions:0.12.2 -| | | \--- org.gebish:geb-implicit-assertions:0.12.2 -| | \--- org.gebish:geb-ast:0.12.2 -| \--- org.seleniumhq.selenium:selenium-support:2.47.1 -> 2.53.1 -| \--- org.seleniumhq.selenium:selenium-remote-driver:2.53.1 -| +--- cglib:cglib-nodep:2.1_3 -| +--- com.google.code.gson:gson:2.3.1 -> 2.7 -| +--- org.seleniumhq.selenium:selenium-api:2.53.1 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | \--- com.google.code.gson:gson:2.3.1 -> 2.7 -| +--- org.apache.httpcomponents:httpclient:4.5.1 -> 4.3.3 (*) -| +--- com.google.guava:guava:19.0 -> 21.0 -| +--- org.apache.commons:commons-exec:1.3 -| +--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 -| \--- net.java.dev.jna:jna-platform:4.1.0 -| \--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 -+--- org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1 -| +--- org.seleniumhq.selenium:selenium-remote-driver:2.47.1 -> 2.53.1 (*) -| +--- net.sourceforge.htmlunit:htmlunit:2.17 -> 2.18 -| | +--- xalan:xalan:2.7.2 -| | | \--- xalan:serializer:2.7.2 (*) -| | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | +--- org.apache.commons:commons-lang3:3.4 -> 3.1 -| | +--- org.apache.httpcomponents:httpclient:4.5 -> 4.3.3 (*) -| | +--- org.apache.httpcomponents:httpmime:4.5 -> 4.3.3 (*) -| | +--- commons-codec:commons-codec:1.10 -| | +--- net.sourceforge.htmlunit:htmlunit-core-js:2.17 -| | +--- xerces:xercesImpl:2.11.0 (*) -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.22 (*) -| | +--- net.sourceforge.cssparser:cssparser:0.9.16 -| | | \--- org.w3c.css:sac:1.3 -| | +--- commons-io:commons-io:2.4 -| | +--- commons-logging:commons-logging:1.2 -| | \--- org.eclipse.jetty.websocket:websocket-client:9.2.12.v20150709 -> 9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-io:9.3.18.v20170406 -| | | \--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | \--- org.eclipse.jetty.websocket:websocket-common:9.3.18.v20170406 -| | +--- org.eclipse.jetty.websocket:websocket-api:9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | \--- org.eclipse.jetty:jetty-io:9.3.18.v20170406 (*) -| \--- org.apache.httpcomponents:httpclient:4.4.1 -> 4.3.3 (*) -+--- net.sourceforge.htmlunit:htmlunit:2.18 (*) -\--- com.h2database:h2: -> 1.4.194 - -testRuntimeClasspath - Runtime classpath of source set 'test'. -+--- org.springframework.boot:spring-boot-starter-logging: -> 1.4.6.RELEASE -| +--- ch.qos.logback:logback-classic:1.1.11 -| | +--- ch.qos.logback:logback-core:1.1.11 -| | \--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| +--- org.slf4j:jul-to-slf4j:1.7.25 -| | \--- org.slf4j:slf4j-api:1.7.25 -| \--- org.slf4j:log4j-over-slf4j:1.7.25 -| \--- org.slf4j:slf4j-api:1.7.25 -+--- org.springframework.boot:spring-boot-autoconfigure: -> 1.4.6.RELEASE -| \--- org.springframework.boot:spring-boot:1.4.6.RELEASE -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE -| | \--- commons-logging:commons-logging:1.2 -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE -| +--- org.springframework:spring-aop:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| \--- org.springframework:spring-expression:4.3.9.RELEASE -| \--- org.springframework:spring-core:4.3.9.RELEASE (*) -+--- org.grails:grails-core: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-tx:4.3.9.RELEASE -| | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| +--- org.grails:grails-bootstrap:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.codehaus.groovy:groovy-xml:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.codehaus.groovy:groovy-templates:2.4.11 -| | | +--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | \--- org.yaml:snakeyaml:1.14 -> 1.17 -| +--- org.grails:grails-spring:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework:spring-web:4.3.9.RELEASE -| | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | \--- org.grails:grails-bootstrap:3.2.11 (*) -| \--- xalan:serializer:2.7.2 -| \--- xml-apis:xml-apis:1.3.04 -> 1.4.01 -+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot-starter:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-starter-logging:1.4.6.RELEASE (*) -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.yaml:snakeyaml:1.17 -| \--- org.springframework.boot:spring-boot-actuator:1.4.6.RELEASE -| +--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 -| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.8 -| | \--- com.fasterxml.jackson.core:jackson-core:2.8.8 -| +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| \--- org.springframework:spring-context:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -+--- org.grails:grails-dependencies: -> 3.2.11 -| +--- org.grails:grails-bootstrap:3.2.11 (*) -| +--- org.grails:grails-plugin-rest:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-web:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-web-common:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | \--- org.codehaus.groovy:groovy-xml:2.4.11 (*) -| | | | +--- org.grails:grails-encoder:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.codehaus.groovy:groovy-json:2.4.11 -| | | | | | \--- org.codehaus.groovy:groovy:2.4.11 -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.grails:grails-gsp:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | +--- org.grails:grails-taglib:3.2.11 -| | | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | | | \--- org.grails:grails-encoder:3.2.11 (*) -| | | | | \--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.codehaus.groovy:groovy-templates:2.4.11 (*) -| | | | +--- org.springframework:spring-webmvc:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-aop:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-expression:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-web:4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context-support:4.3.9.RELEASE -| | | | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | | | | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | | \--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | | +--- org.grails:grails-web-gsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-gsp:3.2.11 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-taglib:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | | \--- org.grails:grails-taglib:3.2.11 (*) -| | | | \--- org.grails:grails-web-sitemesh:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- opensymphony:sitemesh:2.4 -| | | +--- org.grails:grails-web-databinding:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-databinding:3.2.11 (*) -| | | | \--- org.grails:grails-web-common:3.2.11 (*) -| | | +--- org.grails:grails-web-fileupload:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- commons-fileupload:commons-fileupload:1.3.2 -| | | | \--- commons-io:commons-io:2.2 -> 2.4 -| | | +--- org.grails:grails-web-url-mappings:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 -| | | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | | +--- commons-validator:commons-validator:1.5.1 -| | | | | | \--- commons-collections:commons-collections:3.2.2 -| | | | | \--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE -| | | | | +--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -| | | | | +--- org.springframework:spring-tx:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.slf4j:jcl-over-slf4j:1.7.21 -> 1.7.25 (*) -| | | | | +--- org.springframework:spring-core:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | | | | +--- javax.transaction:jta:1.1 -| | | | | +--- org.springframework:spring-beans:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | \--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | | +--- org.grails:grails-web-jsp:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | \--- org.grails:grails-web-gsp:3.2.11 (*) -| | | +--- org.grails:grails-web-mvc:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-web-common:3.2.11 (*) -| | | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | | \--- org.grails:grails-web-url-mappings:3.2.11 (*) -| | | +--- org.grails:grails-web-sitemesh:3.2.11 (*) -| | | +--- org.springframework:spring-aspects:4.3.9.RELEASE -| | | | \--- org.aspectj:aspectjweaver:1.8.9 -> 1.8.10 -| | | +--- org.aspectj:aspectjrt:1.8.7 -> 1.8.10 -| | | \--- org.aspectj:aspectjweaver:1.8.7 -> 1.8.10 -| | +--- org.grails:grails-plugin-controllers:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- org.grails:grails-core:3.2.11 (*) -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-async:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.codehaus.gpars:gpars:1.2.1 -| | | | | \--- org.codehaus.jsr166-mirror:jsr166y:1.7.0 -| | | | +--- io.projectreactor:reactor-core:2.0.8.RELEASE -| | | | | +--- org.reactivestreams:reactive-streams:1.0.0 -| | | | | \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.25 -| | | | \--- io.projectreactor:reactor-stream:2.0.8.RELEASE -| | | | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- commons-lang:commons-lang:2.6 -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-spring:3.2.11 (*) -| | | | +--- org.grails:grails-validation:3.2.11 (*) -| | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE -| | | | | +--- commons-validator:commons-validator:1.5.1 (*) -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-datastore-gorm-validation:6.0.12.RELEASE (*) -| | | | | +--- org.grails:grails-datastore-async:6.0.12.RELEASE -| | | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | | \--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | | \--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | | | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE -| | | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | | +--- org.grails:grails-core:3.0.15 -> 3.2.11 (*) -| | | | | +--- org.grails:grails-bootstrap:3.0.15 -> 3.2.11 (*) -| | | | | \--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | | \--- org.grails:grails-datastore-simple:6.0.12.RELEASE -| | | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | | \--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-plugin-mimetypes:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | \--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-validation:3.2.11 -| | | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | | +--- org.grails:grails-core:3.2.11 (*) -| | | | +--- org.grails:grails-web:3.2.11 (*) -| | | | \--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | +--- org.grails:grails-plugin-domain-class:3.2.11 (*) -| | | \--- org.grails:grails-plugin-i18n:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | \--- org.grails:grails-web:3.2.11 (*) -| | \--- org.grails:grails-plugin-datasource:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-jdbc:4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-sql:2.4.11 -| | | \--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.springframework:spring-context:4.3.9.RELEASE (*) -| | +--- org.apache.tomcat:tomcat-jdbc:8.5.2 -> 8.5.13 -| | | \--- org.apache.tomcat:tomcat-juli:8.5.13 -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:8.5.2 -| +--- org.grails:grails-plugin-databinding:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web:3.2.11 (*) -| +--- org.grails:grails-plugin-i18n:3.2.11 (*) -| +--- org.grails:grails-plugin-gsp:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | +--- commons-lang:commons-lang:2.6 -| | | +--- org.grails:grails-web:3.2.11 (*) -| | | +--- org.grails:grails-plugin-converters:3.2.11 (*) -| | | +--- org.grails:grails-encoder:3.2.11 (*) -| | | \--- org.grails:grails-codecs:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- org.grails:grails-logging:3.2.11 -| | | +--- org.codehaus.groovy:groovy:2.4.11 -| | | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | | \--- org.grails:grails-core:3.2.11 (*) -| | \--- org.grails:grails-web-gsp-taglib:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | \--- org.grails:grails-web-gsp:3.2.11 (*) -| +--- org.grails:grails-plugin-services:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-plugin-datasource:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-core:3.2.11 (*) -| | +--- org.grails:grails-async:3.2.11 (*) -| | +--- io.projectreactor.spring:reactor-spring-context:2.0.7.RELEASE -| | | +--- io.projectreactor.spring:reactor-spring-core:2.0.7.RELEASE -| | | | +--- io.projectreactor:reactor-stream:2.0.7.RELEASE -> 2.0.8.RELEASE (*) -| | | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | | +--- org.springframework:spring-beans:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-context:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | +--- org.springframework:spring-core:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | | \--- org.springframework:spring-expression:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -| | | \--- org.springframework:spring-context-support:4.1.5.RELEASE -> 4.3.9.RELEASE (*) -| | \--- io.projectreactor:reactor-bus:2.0.8.RELEASE -| | +--- com.goldmansachs:gs-collections:5.1.0 -| | | \--- com.goldmansachs:gs-collections-api:5.1.0 -| | \--- io.projectreactor:reactor-core:2.0.8.RELEASE (*) -| +--- org.grails:grails-plugin-url-mappings:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- commons-lang:commons-lang:2.6 -| | +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| | +--- org.grails:grails-web:3.2.11 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-validation:3.2.11 (*) -| +--- org.grails:grails-plugin-interceptors:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-url-mappings:3.2.11 (*) -| +--- org.grails:grails-plugin-async:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.grails:grails-plugin-controllers:3.2.11 (*) -| | \--- org.grails:grails-plugin-events:3.2.11 (*) -| \--- com.h2database:h2:1.3.176 -> 1.4.194 -+--- org.grails:grails-web-boot: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| \--- org.grails:grails-web-common:3.2.11 (*) -+--- org.grails.plugins:cache: -> 3.0.3 -| +--- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2 -| \--- org.javassist:javassist:3.17.1-GA -> 3.20.0-GA -+--- org.grails.plugins:scaffolding: -> 3.3.3 -| \--- org.grails.plugins:fields:2.0.3 -> 2.1.5 -+--- org.grails.plugins:hibernate5: -> 6.0.12 -| +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final -| | +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| | +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final -| | +--- org.javassist:javassist:3.20.0-GA -| | +--- antlr:antlr:2.7.7 -| | +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1 -| | +--- org.jboss:jandex:2.0.3.Final -| | +--- com.fasterxml:classmate:1.3.0 -> 1.3.3 -| | +--- dom4j:dom4j:1.6.1 -| | | \--- xml-apis:xml-apis:1.0.b2 -> 1.4.01 -| | \--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final -| | \--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.grails:grails-datastore-web:6.0.12.RELEASE -| | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-web:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-context:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.grails:grails-datastore-simple:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| +--- org.grails:grails-datastore-gorm-hibernate5:6.0.12.RELEASE -| | +--- org.grails:grails-datastore-gorm-hibernate-core:6.0.12.RELEASE -| | | +--- org.grails:grails-datastore-core:6.0.12.RELEASE (*) -| | | +--- org.grails:grails-async:3.0.15 -> 3.2.11 (*) -| | | +--- org.springframework:spring-jdbc:4.1.9.RELEASE -> 4.3.9.RELEASE (*) -| | | +--- org.grails:grails-datastore-gorm:6.0.12.RELEASE (*) -| | | +--- org.javassist:javassist:3.20.0-GA -| | | +--- org.codehaus.groovy:groovy:2.4.10 -> 2.4.11 -| | | \--- org.springframework:spring-orm:4.1.9.RELEASE -> 4.3.9.RELEASE -| | | +--- org.springframework:spring-beans:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-core:4.3.9.RELEASE (*) -| | | +--- org.springframework:spring-jdbc:4.3.9.RELEASE (*) -| | | \--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.grails:grails-datastore-gorm-support:6.0.12.RELEASE (*) -| | +--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -| | +--- org.hibernate:hibernate-core:5.1.2.Final -> 5.1.3.Final (*) -| | +--- org.hibernate:hibernate-validator:5.2.4.Final -> 5.2.5.Final -| | | +--- javax.validation:validation-api:1.1.0.Final -| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.1.Final -| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3 -| | \--- javax.el:javax.el-api:2.2.4 -| \--- org.springframework:spring-orm:4.2.3.RELEASE -> 4.3.9.RELEASE (*) -+--- org.hibernate:hibernate-core:5.1.3.Final (*) -+--- org.hibernate:hibernate-ehcache:5.1.3.Final -| +--- org.jboss.logging:jboss-logging:3.3.0.Final -> 3.3.1.Final -| +--- org.hibernate:hibernate-core:5.1.3.Final (*) -| \--- net.sf.ehcache:ehcache:2.10.1 -> 2.10.3 -| \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.25 -+--- org.grails.plugins:ala-ws-plugin:2.0-SNAPSHOT -| +--- org.grails.plugins:http-builder-helper:1.0.2.ALA -| | \--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1 -| | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.3.3 -| | | +--- org.apache.httpcomponents:httpcore:4.3.2 -> 4.3.3 -| | | +--- commons-logging:commons-logging:1.1.3 -> 1.2 -| | | \--- commons-codec:commons-codec:1.6 -> 1.10 -| | +--- net.sf.json-lib:json-lib:2.3 -| | | +--- commons-beanutils:commons-beanutils:1.8.0 -> 1.8.3 -| | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2 -| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | | +--- commons-lang:commons-lang:2.4 -> 2.6 -| | | \--- net.sf.ezmorph:ezmorph:1.0.6 -| | | \--- commons-lang:commons-lang:2.3 -> 2.6 -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.16 -> 1.9.22 -| | | \--- xerces:xercesImpl:2.11.0 -| | | \--- xml-apis:xml-apis:1.4.01 -| | \--- xml-resolver:xml-resolver:1.2 -| +--- org.grails.plugins:ala-auth:3.0.0 -| | +--- au.org.ala:userdetails-service-client:1.2.0 -| | | +--- com.squareup.retrofit2:retrofit:2.2.0 -| | | | \--- com.squareup.okhttp3:okhttp:3.6.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.retrofit2:converter-moshi:2.2.0 -| | | | +--- com.squareup.retrofit2:retrofit:2.2.0 (*) -| | | | \--- com.squareup.moshi:moshi:1.4.0 -| | | | \--- com.squareup.okio:okio:1.11.0 -| | | +--- com.squareup.moshi:moshi:1.4.0 (*) -| | | \--- com.squareup.moshi:moshi-adapters:1.4.0 -| | | \--- com.squareup.moshi:moshi:1.4.0 (*) -| | \--- au.org.ala:ala-cas-client:2.3 -| | +--- org.jasig.cas.client:cas-client-core:3.4.1 -| | | \--- org.slf4j:slf4j-api:1.7.1 -> 1.7.25 -| | +--- org.slf4j:slf4j-api:1.7.21 -> 1.7.25 -| | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) -| +--- org.apache.httpcomponents:httpmime:4.5.3 -> 4.3.3 -| | \--- org.apache.httpcomponents:httpclient:4.3.3 (*) -| +--- javax.validation:validation-api:1.1.0.Final -| +--- javax.el:javax.el-api:2.2.4 -| +--- org.glassfish.web:javax.el:2.2.4 -| | \--- javax.el:javax.el-api:2.2.4 -| +--- org.hibernate:hibernate-validator:5.1.3.Final -> 5.2.5.Final (*) -| +--- org.hibernate:hibernate-validator-annotation-processor:5.1.3.Final -> 5.2.5.Final -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| \--- com.bertramlabs.plugins:asset-pipeline-core:2.14.1 -| +--- org.mozilla:rhino:1.7R4 -| +--- com.google.javascript:closure-compiler-unshaded:v20160713 -| | +--- com.google.javascript:closure-compiler-externs:v20160713 -| | +--- args4j:args4j:2.0.26 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | +--- com.google.protobuf:protobuf-java:2.5.0 -| | +--- com.google.code.gson:gson:2.2.4 -> 2.7 -| | \--- com.google.code.findbugs:jsr305:1.3.9 -| \--- commons-logging:commons-logging:1.1.1 -> 1.2 -+--- org.grails.plugins:ala-auth:3.0.0 (*) -+--- org.grails.plugins:ala-admin-plugin:2.0-SNAPSHOT -| +--- org.apache.httpcomponents:httpclient:4.5.3 -> 4.3.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- org.grails.plugins:external-config:1.1.1 -+--- org.grails.plugins:http-builder-helper:1.0.2.ALA (*) -+--- org.grails.plugins:csv:1.0.ALA.3 -| \--- net.sf.opencsv:opencsv:2.3 -+--- org.grails.plugins:mail:2.0.0.RC6 -| +--- javax.mail:javax.mail-api:1.5.1 -> 1.5.6 -| \--- com.sun.mail:javax.mail:1.5.1 -> 1.5.6 -| \--- javax.activation:activation:1.1 -+--- org.grails.plugins:oauth:4.0.0 -| +--- com.github.scribejava:scribejava-apis:4.0.0 -| | \--- com.github.scribejava:scribejava-core:4.0.0 -| \--- com.github.scribejava:scribejava-core:4.0.0 -+--- domurtag.plugins:grails-simple-captcha:1.0.0-grails3 -+--- org.grails.plugins:export:2.0.0 -| +--- xerces:xercesImpl:2.9.0 -> 2.11.0 (*) -| +--- net.sf.opencsv:opencsv:2.3 -| +--- com.lowagie:itext:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 -| | \--- org.bouncycastle:bctsp-jdk14:1.38 -| | +--- org.bouncycastle:bcprov-jdk14:1.38 -| | \--- org.bouncycastle:bcmail-jdk14:1.38 -| | \--- org.bouncycastle:bcprov-jdk14:1.38 -| +--- com.lowagie:itext-rtf:2.1.7 -| | +--- bouncycastle:bcmail-jdk14:138 -| | +--- bouncycastle:bcprov-jdk14:138 -| | \--- bouncycastle:bctsp-jdk14:138 (*) -| +--- org.odftoolkit:simple-odf:0.6.6 -| | +--- org.odftoolkit:odfdom-java:0.8.7 -| | | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| | \--- xerces:xercesImpl:2.9.1 -> 2.11.0 (*) -| +--- net.sourceforge.jexcelapi:jxl:2.6.12 -| | \--- log4j:log4j:1.2.14 -| \--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- com.google.guava:guava:21.0 -+--- org.apache.httpcomponents:httpcore:4.3.3 -+--- org.apache.httpcomponents:httpclient:4.3.3 (*) -+--- org.apache.httpcomponents:httpmime:4.3.3 (*) -+--- org.apache.commons:commons-lang3:3.1 -+--- commons-beanutils:commons-beanutils:1.8.3 (*) -+--- org.mindrot:jbcrypt:0.4 -+--- org.springframework.boot:spring-boot-starter-tomcat: -> 1.4.6.RELEASE -| +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -| +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.13 -| \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.13 -+--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.1 (*) -+--- org.grails.plugins:ala-bootstrap3:3.0.0-SNAPSHOT -| +--- au.org.ala:ala-cas-client:2.3 (*) -| \--- com.bertramlabs.plugins:asset-pipeline-grails:2.14.2 -> 2.14.1 (*) -+--- mysql:mysql-connector-java:5.1.42 -+--- org.grails:grails-plugin-testing: -> 3.2.11 -| +--- org.codehaus.groovy:groovy:2.4.11 -| +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| +--- org.grails:grails-test:3.2.11 -| | +--- org.codehaus.groovy:groovy:2.4.11 -| | +--- org.slf4j:slf4j-api:1.7.22 -> 1.7.25 -| | +--- org.slf4j:jcl-over-slf4j:1.7.22 -> 1.7.25 (*) -| | +--- org.springframework:spring-tx:4.3.9.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE -| | | \--- org.springframework.boot:spring-boot:1.4.6.RELEASE (*) -| | +--- org.codehaus.groovy:groovy-test:2.4.11 -> 2.4.10 -| | +--- junit:junit:4.12 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.spockframework:spock-core:1.0-groovy-2.4 -| | \--- org.objenesis:objenesis:1.4 -> 2.1 -| +--- org.grails:grails-logging:3.2.11 (*) -| +--- org.grails:grails-async:3.2.11 (*) -| +--- org.springframework:spring-test:4.3.9.RELEASE -| | \--- org.springframework:spring-core:4.3.9.RELEASE (*) -| +--- org.springframework.boot:spring-boot-starter-test:1.4.6.RELEASE -| | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | +--- org.springframework.boot:spring-boot-test-autoconfigure:1.4.6.RELEASE -| | | +--- org.springframework.boot:spring-boot-test:1.4.6.RELEASE (*) -| | | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.RELEASE (*) -| | +--- com.jayway.jsonpath:json-path:2.2.0 -| | | +--- net.minidev:json-smart:2.2.1 -| | | | \--- net.minidev:accessors-smart:1.1 -| | | | \--- org.ow2.asm:asm:5.0.3 -| | | \--- org.slf4j:slf4j-api:1.7.16 -> 1.7.25 -| | +--- junit:junit:4.12 (*) -| | +--- org.assertj:assertj-core:2.5.0 -| | +--- org.mockito:mockito-core:1.10.19 -| | | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 -| | | \--- org.objenesis:objenesis:2.1 -| | +--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.hamcrest:hamcrest-library:1.3 -| | | \--- org.hamcrest:hamcrest-core:1.3 -| | +--- org.skyscreamer:jsonassert:1.3.0 -| | | \--- org.json:json:20090211 -> 20140107 -| | +--- org.springframework:spring-core:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| | \--- org.springframework:spring-test:4.3.8.RELEASE -> 4.3.9.RELEASE (*) -| +--- org.spockframework:spock-spring:1.0-groovy-2.4 -| +--- org.spockframework:spock-core:1.0-groovy-2.4 -| +--- junit:junit:4.12 (*) -| \--- cglib:cglib:2.2.2 -| \--- asm:asm:3.3.1 -+--- org.grails.plugins:geb: -> 1.0.2 -| +--- org.gebish:geb-spock:0.12.2 -| | \--- org.gebish:geb-core:0.12.2 -| | +--- org.gebish:geb-waiting:0.12.2 -| | | +--- org.gebish:geb-exceptions:0.12.2 -| | | \--- org.gebish:geb-implicit-assertions:0.12.2 -| | \--- org.gebish:geb-ast:0.12.2 -| \--- org.seleniumhq.selenium:selenium-support:2.47.1 -> 2.53.1 -| \--- org.seleniumhq.selenium:selenium-remote-driver:2.53.1 -| +--- cglib:cglib-nodep:2.1_3 -| +--- com.google.code.gson:gson:2.3.1 -> 2.7 -| +--- org.seleniumhq.selenium:selenium-api:2.53.1 -| | +--- com.google.guava:guava:19.0 -> 21.0 -| | \--- com.google.code.gson:gson:2.3.1 -> 2.7 -| +--- org.apache.httpcomponents:httpclient:4.5.1 -> 4.3.3 (*) -| +--- com.google.guava:guava:19.0 -> 21.0 -| +--- org.apache.commons:commons-exec:1.3 -| +--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 -| \--- net.java.dev.jna:jna-platform:4.1.0 -| \--- net.java.dev.jna:jna:4.1.0 -> 4.2.2 -+--- org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1 -| +--- org.seleniumhq.selenium:selenium-remote-driver:2.47.1 -> 2.53.1 (*) -| +--- net.sourceforge.htmlunit:htmlunit:2.17 -> 2.18 -| | +--- xalan:xalan:2.7.2 -| | | \--- xalan:serializer:2.7.2 (*) -| | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2 -| | +--- org.apache.commons:commons-lang3:3.4 -> 3.1 -| | +--- org.apache.httpcomponents:httpclient:4.5 -> 4.3.3 (*) -| | +--- org.apache.httpcomponents:httpmime:4.5 -> 4.3.3 (*) -| | +--- commons-codec:commons-codec:1.10 -| | +--- net.sourceforge.htmlunit:htmlunit-core-js:2.17 -| | +--- xerces:xercesImpl:2.11.0 (*) -| | +--- net.sourceforge.nekohtml:nekohtml:1.9.22 (*) -| | +--- net.sourceforge.cssparser:cssparser:0.9.16 -| | | \--- org.w3c.css:sac:1.3 -| | +--- commons-io:commons-io:2.4 -| | +--- commons-logging:commons-logging:1.2 -| | \--- org.eclipse.jetty.websocket:websocket-client:9.2.12.v20150709 -> 9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-io:9.3.18.v20170406 -| | | \--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | \--- org.eclipse.jetty.websocket:websocket-common:9.3.18.v20170406 -| | +--- org.eclipse.jetty.websocket:websocket-api:9.3.18.v20170406 -| | +--- org.eclipse.jetty:jetty-util:9.3.18.v20170406 -| | \--- org.eclipse.jetty:jetty-io:9.3.18.v20170406 (*) -| \--- org.apache.httpcomponents:httpclient:4.4.1 -> 4.3.3 (*) -+--- net.sourceforge.htmlunit:htmlunit:2.18 (*) -\--- com.h2database:h2: -> 1.4.194 - -testRuntimeOnly - Runtime only dependencies for source set 'test'. (n) -No dependencies - -(*) - dependencies omitted (listed previously) - -BUILD SUCCESSFUL - -Total time: 2.178 secs diff --git a/gradle.properties b/gradle.properties index 51cd3aea..ff616295 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,7 @@ -#Wed Jul 19 16:19:40 AEST 2017 -grailsVersion=3.3.10 -grailsWrapperVersion=1.0.0 -gormVersion=6.1.12.RELEASE -gradleWrapperVersion=3.5 +grailsVersion=5.2.1 +grailsGradlePluginVersion=5.2.1 +groovyVersion=3.0.11 +gorm.version=7.3.2 +org.gradle.daemon=true +org.gradle.parallel=true +org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 0daf269d7e9fb08a246cf4147f24e3bd929d6085..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 54212 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 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/grails-app/assets/stylesheets/application.css b/grails-app/assets/stylesheets/application.css index 448d0bab..59996bfe 100644 --- a/grails-app/assets/stylesheets/application.css +++ b/grails-app/assets/stylesheets/application.css @@ -1,6 +1,11 @@ /* *= require_self */ + +body #main { + padding-left:60px;padding-right:100px; +} + .userdetails-menu { list-style: square; } @@ -106,3 +111,33 @@ url('../fonts/roboto-v18-latin_latin-ext-700.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/roboto-v18-latin_latin-ext-700.svg#Roboto') format('svg'); /* Legacy iOS */ } + +.image { + min-width: 50px; + margin-right: 20px; + display: block; +} + +.image .glyphicon { + margin-top: 10px; + margin-bottom: 20px; + font-size: 35px; + padding-left: 10px; +} + +.image img { + padding-top: 8px; + max-width: 50px; +} + +.d-flex .content { + display:block; +} +.d-flex { + display: flex!important; + margin-top: 20px; +} + +#external-linkages .d-flex { + margin-top: 0px; +} diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml index 60d44af8..22a928e3 100644 --- a/grails-app/conf/application.yml +++ b/grails-app/conf/application.yml @@ -38,11 +38,23 @@ spring: repositories: enabled: false session: - store-type: none # Spring Session support disabled by default. - disable-redis-config-action: false - grails: - mutableAttributes: - - SYNCHRONIZER_TOKENS_HOLDER + enabled: false + store-type: none # Spring Session support disabled by default. +# disable-redis-config-action: false + grails: + mutableAttributes: + - SYNCHRONIZER_TOKENS_HOLDER + jmx: + unique-names: true + devtools: + restart: + additional-exclude: + - '*.gsp' + - '**/*.gsp' + - '*.gson' + - '**/*.gson' + - 'logback.groovy' + - '*.properties' server: use-forward-headers: true tomcat: @@ -51,7 +63,7 @@ server: protocol_header: x-forwarded-proto protocol-header-https-value: https # Add IPv6 localhost to default list - internal-proxies: 10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.1[6-9]{1}\.\d{1,3}\.\d{1,3}|172\.2[0-9]{1}\.\d{1,3}\.\d{1,3}|172\.3[0-1]{1}\.\d{1,3}\.\d{1,3}|0:0:0:0:0:0:0:1|::1 + # internal-proxies: 10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.1[6-9]{1}\.\d{1,3}\.\d{1,3}|172\.2[0-9]{1}\.\d{1,3}\.\d{1,3}|172\.3[0-1]{1}\.\d{1,3}\.\d{1,3}|0:0:0:0:0:0:0:1|::1 --- grails: mime: @@ -113,42 +125,52 @@ grails: reloadable: false security: + core: + uri-filter-pattern: ['/admin/*','/registration/editAccount','/my-profile','/my-profile/','/myprofile/','/myprofile','/profile/*','/admin/','/admin','/registration/update','/registration/update/*','/monitoring','/monitoring/*','/registration/disableAccount/*','/registration/disableAccount','/admin/admin/downloadUsersCsvFile','/alaAdmin/*'] + optional-filter-pattern: ['/'] cas: - uriFilterPattern: '/admin/.*,/registration/editAccount,/my-profile,/my-profile/,/myprofile/,/myprofile,/profile/.*,/admin/,/admin,/registration/update,/registration/update/.*,/monitoring,/monitoring/*,/registration/disableAccount/.*,/registration/disableAccount,/admin/admin/downloadUsersCsvFile,/alaAdmin.*' - authenticateOnlyIfLoggedInFilterPattern: '/' + enabled: false + oidc: + enabled: true + scope: openid profile email ala roles + allowUnsignedIdTokens: true # Disable once CAS no longer suggests the none algorithm + jwt: + enabled: true + fallbackToLegacyKeys: true # Reset to false once legacy api keys no longer supported filterOrder: 0 - basic: - enabled: true - authorizeMode: role - realm: ALA User Details - path: - - /status/** +# basic: +# enabled: true +# authorizeMode: role +# realm: ALA User Details +# path: +# - /status/** +webservice: + jwt: true + scope: "openid" # Spring Actuator Endpoints are Disabled by Default -endpoints: - enabled: false - sensitive: true - jmx: - enabled: true - unique-names: true - cors: - allow-credentials: true - allowed-methods: - - GET - - POST - - DELETE - - PUT - allowed-headers: "*" - allowed-origins: "*" management: - context-path: /status - security: - enabled: true - roles: - - ACTUATOR + endpoints: + enabled-by-default: false + endpoint: + info: + enabled: true health: + enabled: true + defaults: + enabled: true + jdbc: + enabled: true redis: enabled: false # set to true for HA environments + mongo: + enabled: false # set to true for HA environments + web: + base-path: "/actuator" + exposure: + include: + - health + - info spring: boot: admin: @@ -165,6 +187,8 @@ password: bcrypt: strength: 10 + + attributes: states: path: classpath:states.json @@ -173,12 +197,23 @@ attributes: skin: layout: "ala-main" - fluidLayout: false + fluidLayout: true orgNameLong: "Atlas of Living Australia" orgNameShort: "ALA" privacyPolicy: "https://www.ala.org.au/privacy-policy/" termsOfUse: "https://www.ala.org.au/terms-of-use/" +logo: + biocollect: https://www.ala.org.au/app/uploads/2019/05/BioCollect-icon-1.png + spatialportal: https://www.ala.org.au/app/uploads/2019/06/19-0078_ALA_ICON_IconSuite_Spatial-Portal.svg + digivol: https://www.ala.org.au/app/uploads/2019/04/specimen-icon.png + specieslists: https://www.ala.org.au/app/uploads/2019/06/19-0078_ALA_ICON_IconSuite_Species-Lists.svg + api: https://www.ala.org.au/app/uploads/2019/06/19-0078_ALA_ICON_IconSuite_Web-service-APIs.svg + inaturalist: https://www.ala.org.au/app/uploads/2019/09/iNaturalist_logomark-alaBlack-icon.png + sandbox: https://www.ala.org.au/app/uploads/2019/06/19-0078_ALA_ICON_IconSuite_Sandbox-1.svg + downloads: https://www.ala.org.au/app/uploads/2019/06/19-0078_ALA_ICON_IconSuite_Download-Predefined-Datasets.svg + flickr: https://upload.wikimedia.org/wikipedia/commons/3/31/Flickr_font_awesome.svg + oauth: # debug: true providers: @@ -215,6 +250,22 @@ sightings: myData: url: https://sandbox.ala.org.au/tempDataResource/myData +biocollect: + url: https://biocollect.ala.org.au/acsa/bioActivity/list?hub=acsa + +openapi: + title: UserDetails REST services + description: REST services for interacting with the user details webapp + terms: https://www.ala.org.au/terms + contact: + name: Support + email: support@ala.org.au + license: + name: Mozilla Public License 1.1 + url: https://www.mozilla.org/en-US/MPL/1.1/ + version: '@info.app.version@' + cachetimeoutms: 0 + supportEmail: support-local@ala.org.au homeUrl: https://www.ala.org.au homeLogoUrl: https://www.ala.org.au/app/uploads/2020/06/ALA_Logo_Inline_RGB-300x63.png @@ -251,31 +302,32 @@ environments: test: security: cas: - appServerName: "http://auth.ala.org.au" + appServerName: "https://auth.ala.org.au" production: grails: - serverURL: "http://auth.ala.org.au/userdetails" + serverURL: "https://auth.ala.org.au/userdetails" mail: host: "localhost" port: 25 security: cas: - appServerName: "http://auth.ala.org.au" + appServerName: "https://auth.ala.org.au" --- hibernate: + allow_update_outside_transaction: true # Hibernate 5 made transactions required to flush changes, set to true for backwards compat but should be set to false and bugs fixed in the future show_sql: false cache: queries: false use_second_level_cache: false use_query_cache: true -# region: -# factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory + region: + factory_class: org.hibernate.cache.jcache.internal.JCacheRegionFactory dataSource: pooled: true jmxExport: true - driverClassName: com.mysql.jdbc.Driver + driverClassName: com.mysql.cj.jdbc.Driver type: "com.zaxxer.hikari.HikariDataSource" username: password: @@ -320,14 +372,3 @@ environments: production: dataSource: dbCreate: "validate" ---- -spring: - profiles: disable-redis -# autoconfigure: -# exclude: -# - org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration -# - org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration -# data: -# redis: -# repositories: -# enabled: false \ No newline at end of file diff --git a/grails-app/conf/logback.groovy b/grails-app/conf/logback.old.groovy similarity index 99% rename from grails-app/conf/logback.groovy rename to grails-app/conf/logback.old.groovy index 0b9f9489..165a8517 100644 --- a/grails-app/conf/logback.groovy +++ b/grails-app/conf/logback.old.groovy @@ -39,7 +39,6 @@ switch (Environment.current) { appender(TOMCAT_LOG, ConsoleAppender) { encoder(PatternLayoutEncoder) { charset = Charset.forName('UTF-8') - pattern = '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date '%clr(%5p) ' + // Log level diff --git a/grails-app/conf/logback.xml b/grails-app/conf/logback.xml new file mode 100644 index 00000000..1aff078d --- /dev/null +++ b/grails-app/conf/logback.xml @@ -0,0 +1,17 @@ + + + + + + + + + UTF-8 + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex + + + + + + + diff --git a/grails-app/controllers/au/org/ala/userdetails/AdminController.groovy b/grails-app/controllers/au/org/ala/userdetails/AdminController.groovy index 2c96a515..d24e1e9f 100644 --- a/grails-app/controllers/au/org/ala/userdetails/AdminController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/AdminController.groovy @@ -59,7 +59,7 @@ class AdminController { render(view: 'exportUsers', model: [roles : Role.list(), - primaryFields: grailsApplication.config.admin.export.csv.primary.fields, + primaryFields: grailsApplication.config.getProperty('admin.export.csv.primary.fields'), extraFields : extraFields]) } @@ -80,7 +80,7 @@ class AdminController { def userList = userService.findUsersForExport(roleList, params?.includeInactiveUsers) //2. Then prepare the format options - String primaryFieldsProperty = grailsApplication.config.admin.export.csv.primary.fields + String primaryFieldsProperty = grailsApplication.config.getProperty('admin.export.csv.primary.fields') def primaryFields = primaryFieldsProperty ? primaryFieldsProperty.split(',').collect { it as String } : [] def fields = primaryFields @@ -132,12 +132,12 @@ class AdminController { } def firstRow = (boolean) params.firstRowHasFieldNames - def primaryUsage = params.primaryUsage as String + def affiliation = params.affiliation as String def subject = params.emailSubject as String def title = params.emailTitle as String def body = params.emailBody as String - def results = userService.bulkRegisterUsersFromFile(f.inputStream, firstRow, primaryUsage, subject, title, body) + def results = userService.bulkRegisterUsersFromFile(f.inputStream, firstRow, affiliation, subject, title, body) render(view:'loadUsersResults', model:[results: results]) return } else { diff --git a/grails-app/controllers/au/org/ala/userdetails/BaseController.groovy b/grails-app/controllers/au/org/ala/userdetails/BaseController.groovy index 9dd4399f..0335d420 100644 --- a/grails-app/controllers/au/org/ala/userdetails/BaseController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/BaseController.groovy @@ -25,25 +25,25 @@ import static org.apache.http.HttpStatus.SC_OK class BaseController { public static final String CONTEXT_TYPE_JSON = "application/json" - def notFound = {String message = null -> + protected def notFound(String message = null) { sendError(SC_NOT_FOUND, message ?: "") } - def badRequest = {String message = null -> + protected def badRequest(String message = null) { sendError(SC_BAD_REQUEST, message ?: "") } - def success = { resp -> + protected def success(resp) { response.status = SC_OK response.setContentType(CONTEXT_TYPE_JSON) render resp as JSON } - def saveFailed = { + protected def saveFailed() { sendError(SC_INTERNAL_SERVER_ERROR) } - def sendError = {int status, String msg = null -> + protected def sendError(int status, String msg = null) { response.status = status response.sendError(status, msg) } diff --git a/grails-app/controllers/au/org/ala/userdetails/ExternalSiteController.groovy b/grails-app/controllers/au/org/ala/userdetails/ExternalSiteController.groovy index d30517fc..c57ee00a 100644 --- a/grails-app/controllers/au/org/ala/userdetails/ExternalSiteController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/ExternalSiteController.groovy @@ -16,13 +16,47 @@ package au.org.ala.userdetails import grails.converters.JSON +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.media.ArraySchema +import io.swagger.v3.oas.annotations.media.Content +import io.swagger.v3.oas.annotations.media.Schema +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import javax.ws.rs.Path +import javax.ws.rs.Produces + +import static io.swagger.v3.oas.annotations.enums.ParameterIn.QUERY + +@Path('/ws') class ExternalSiteController { def userService def index() {} + @Operation( + method = "GET", + tags = "users", + summary = "Get list of flickr users", + operationId = "flickr", + description = "Lists all flickr profiles known to the application, including their ala id, flickr id, username and their flickr URL", + parameters = [], + responses = [ + @ApiResponse( + description = "Successful get flickr users", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + array = @ArraySchema(schema = @Schema(implementation = Map)) + ) + ] + ) + ] + ) + @Path("flickr") + @Produces("application/json") def flickr() { def flickrIds = UserProperty.findAllByName("flickrId") @@ -36,6 +70,32 @@ class ExternalSiteController { } } + @Operation( + method = "GET", + tags = "users", + summary = "Get total count of users in the system", + operationId = "getUserStats", + description = "Gets a count of all users in the system, excluding locked and non-activated accounts. In addition it also provides a count of users from one year ago.", + parameters = [ + // TODO Locale as a param + ], + responses = [ + @ApiResponse( + description = "Successful retrieved user counts", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + schema = @Schema( + implementation = Map + ) + ) + ] + ) + ] + ) + @Path("getUserStats") + @Produces("application/json") def getUserStats() { def stats = userService.getUsersCounts(request.locale) render(stats as JSON, contentType: "application/json") // getUsersCounts is cached diff --git a/grails-app/controllers/au/org/ala/userdetails/MobileKeyController.groovy b/grails-app/controllers/au/org/ala/userdetails/MobileKeyController.groovy index 8f0fce10..c097e120 100644 --- a/grails-app/controllers/au/org/ala/userdetails/MobileKeyController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/MobileKeyController.groovy @@ -34,7 +34,7 @@ class MobileKeyController { log.info("Authenticate request received for....." +params.userName) try { HttpClient http = new DefaultHttpClient() - HttpPost post = new HttpPost(grailsApplication.config.security.cas.casServerUrlPrefix + "/v1/tickets") + HttpPost post = new HttpPost(grailsApplication.config.getProperty('security.cas.casServerUrlPrefix') + "/v1/tickets") String userName = params.userName.toString().toLowerCase() List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("username", userName)); diff --git a/grails-app/controllers/au/org/ala/userdetails/ProfileController.groovy b/grails-app/controllers/au/org/ala/userdetails/ProfileController.groovy index f67c89a9..00503558 100644 --- a/grails-app/controllers/au/org/ala/userdetails/ProfileController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/ProfileController.groovy @@ -23,9 +23,12 @@ import com.github.scribejava.core.model.* import com.github.scribejava.core.oauth.OAuth20Service import com.github.scribejava.core.oauth.OAuthService import grails.converters.JSON +import org.apache.http.HttpStatus import org.springframework.web.context.request.RequestContextHolder import uk.co.desirableobjects.oauth.scribe.OauthProvider +import static org.apache.http.HttpStatus.SC_UNAUTHORIZED + class ProfileController { static final String FLICKR_ID = 'flickrId' @@ -37,9 +40,7 @@ class ProfileController { static final List FLICKR_ATTRS = [FLICKR_ID, FLICKR_USERNAME] static final List INATURALIST_ATTRS = [INATURALIST_TOKEN, INATURALIST_ID, INATURALIST_USERNAME] - def authService def oauthService - def emailService def userService def index() { @@ -48,13 +49,11 @@ class ProfileController { if (user) { def props = user.propsAsMap() - def isAdmin = RequestContextHolder.currentRequestAttributes()?.isUserInRole("ROLE_ADMIN") + def isAdmin = request.isUserInRole("ROLE_ADMIN") render(view: "myprofile", model: [user: user, props: props, isAdmin: isAdmin]) } else { - String baseUrl = grailsApplication.config.security.cas.loginUrl - def separator = baseUrl.contains("?") ? "&" : "?" - def loginUrl = "${baseUrl}${separator}service=" + URLEncoder.encode(emailService.getMyProfileUrl(), "UTF-8") - redirect(url: loginUrl) + log.info('my-profile without a user?') + render(status: SC_UNAUTHORIZED) } } @@ -117,8 +116,8 @@ class ProfileController { FlickrApi flickrApi = FlickrApi.instance() OAuth1RequestToken token = session.getAt("flickr:oasRequestToken") OAuthService service = new ServiceBuilder(). - apiKey(grailsApplication.config.oauth.providers.flickr.key). - apiSecret(grailsApplication.config.oauth.providers.flickr.secret).build(flickrApi) + apiKey(grailsApplication.config.getProperty('oauth.providers.flickr.key')). + apiSecret(grailsApplication.config.getProperty('oauth.providers.flickr.secret')).build(flickrApi) def accessToken = service.getAccessToken(token, params.oauth_verifier) diff --git a/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy b/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy index 4b727435..b581fc37 100644 --- a/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy @@ -15,8 +15,23 @@ package au.org.ala.userdetails +import au.org.ala.auth.PreAuthorise import grails.converters.JSON +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.Parameter +import io.swagger.v3.oas.annotations.media.ArraySchema +import io.swagger.v3.oas.annotations.media.Content +import io.swagger.v3.oas.annotations.media.Schema +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import javax.ws.rs.Path +import javax.ws.rs.Produces + +import static io.swagger.v3.oas.annotations.enums.ParameterIn.QUERY +import static io.swagger.v3.oas.annotations.enums.ParameterIn.HEADER + +@Path("property") class PropertyController extends BaseController { def profileService @@ -30,24 +45,65 @@ class PropertyController extends BaseController { * get a property value for a user * @return */ + @Operation( + method = "GET", + tags = "properties", + summary = "Get Property", + operationId = "getProperty", + description = "Get a property value for a user", + parameters = [ + @Parameter( + name = "alaId", + in = QUERY, + description = "The user's ALA ID", + schema = @Schema(implementation = Long), + required = true + ), + @Parameter( + name = "name", + in = QUERY, + description = "The name of the property to get", + required = true + ), + @Parameter( + name = 'Accept', + in = HEADER, + description = "Must be application/json", + required = true, + schema = @Schema(allowableValues = ['application/json']) + ) + ], + responses = [ + @ApiResponse( + description = "Successful get property request", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + array = @ArraySchema(schema = @Schema(implementation = UserProperty)) + ) + ] + ) + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + ) + @Path("getProperty") + @Produces("application/json") + @PreAuthorise(requiredScope = 'users:read') def getProperty() { - if (authorisedSystemService.isAuthorisedSystem(request)) { - String name = params.name; - Long alaId = Long.parseLong(params.alaId); - if (!name || !alaId) { - badRequest "name and alaId must be provided"; + String name = params.name + Long alaId = params.long('alaId') + if (!name || !alaId) { + badRequest "name and alaId must be provided"; + } else { + User user = User.findById(alaId); + List props + if (user) { + props = profileService.getUserProperty(user, name); + render text: props as JSON, contentType: 'application/json' } else { - User user = User.findById(alaId); - List props - if (user) { - props = profileService.getUserProperty(user, name); - render text: props as JSON, contentType: 'application/json' - } else { - notFound "Could not find user for id: ${alaId}"; - } + notFound "Could not find user for id: ${alaId}"; } - } else { - response.sendError(403) } } @@ -55,29 +111,82 @@ class PropertyController extends BaseController { * save a property value to a user * @return */ + @Operation( + method = "POST", + tags = "properties", + summary = "Save a Property", + operationId = "saveProperty", + description = "Saves a property value for a user", + parameters = [ + @Parameter( + name = "alaId", + in = QUERY, + description = "The user's ALA ID", + schema = @Schema(implementation = Long), + required = true + ), + @Parameter( + name = "name", + in = QUERY, + description = "The name of the property to set", + required = true + ), + @Parameter( + name = "value", + in = QUERY, + description = "The value of the property to set.", + required = false + ), + @Parameter( + name = 'Accept', + in = HEADER, + description = "Must be application/json", + required = true, + schema = @Schema(allowableValues = ['application/json']) + ) + ], + responses = [ + @ApiResponse( + description = "Successful save property request", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + schema = @Schema(implementation = UserProperty) + ) + ] + ), + @ApiResponse( + description = "Could not find user", + responseCode = "404", + content = [@Content(mediaType = "text/plain")] + ), + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:write'])] + ) + @Path("saveProperty") + @Produces("application/json") + @PreAuthorise(requiredScope = 'users:write') def saveProperty(){ - if (authorisedSystemService.isAuthorisedSystem(request)) { - String name = params.name; - String value = params.value; - Long alaId = Long.parseLong(params.alaId); - if (!name || !alaId) { - badRequest "name and alaId must be provided"; - } else { - User user = User.findById(alaId); - UserProperty property - if (user) { - property = profileService.saveUserProperty(user, name, value); - if (property.hasErrors()) { - saveFailed() - } else { - render text: property as JSON, contentType: 'application/json' - } + String name = params.name; + String value = params.value; + Long alaId = params.long('alaId'); + if (!name || !alaId) { + badRequest "name and alaId must be provided"; + } else { + User user = User.findById(alaId); + UserProperty property + if (user) { + property = profileService.saveUserProperty(user, name, value); + if (property.hasErrors()) { + saveFailed() } else { - notFound "Could not find user for id: ${alaId}"; + render text: property as JSON, contentType: 'application/json' } + } else { + notFound "Could not find user for id: ${alaId}"; } - } else { - response.sendError(403) } + } } diff --git a/grails-app/controllers/au/org/ala/userdetails/RegistrationController.groovy b/grails-app/controllers/au/org/ala/userdetails/RegistrationController.groovy index 78e80720..50c8a98e 100644 --- a/grails-app/controllers/au/org/ala/userdetails/RegistrationController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/RegistrationController.groovy @@ -108,11 +108,11 @@ class RegistrationController { /** Displayed as a result of a password update with a duplicate form submission. */ def duplicateSubmit() { - [serverUrl: grailsApplication.config.grails.serverURL + '/myprofile'] + [serverUrl: grailsApplication.config.getProperty('grails.serverURL') + '/myprofile'] } def passwordResetSuccess() { - [serverUrl: grailsApplication.config.grails.serverURL + '/myprofile'] + [serverUrl: grailsApplication.config.getProperty('grails.serverURL') + '/myprofile'] } def startPasswordReset() { @@ -148,8 +148,7 @@ class RegistrationController { def success = userService.disableUser(user) if (success) { - redirect(controller: 'logout', action: 'logout', params: [casUrl: grailsApplication.config.security.cas.logoutUrl, - appUrl: grailsApplication.config.grails.serverURL + '/registration/accountDisabled']) + redirect(controller: 'logout', action: 'logout', params: [appUrl: grailsApplication.config.getProperty('grails.serverURL') + '/registration/accountDisabled']) } else { render(view: "accountError", model: [msg: "Failed to disable user profile - unknown error"]) } @@ -213,7 +212,8 @@ class RegistrationController { //create user account... if (!params.email || userService.isEmailRegistered(params.email)) { def inactiveUser = !userService.isActive(params.email) - render(view: 'createAccount', model: [edit: false, user: params, props: params, alreadyRegistered: true, inactiveUser: inactiveUser]) + def lockedUser = userService.isLocked(params.email) + render(view: 'createAccount', model: [edit: false, user: params, props: params, alreadyRegistered: true, inactiveUser: inactiveUser, lockedUser: lockedUser]) } else { try { @@ -235,6 +235,8 @@ class RegistrationController { render(view: "accountError", model: [msg: e.getMessage()]) } } + }.invalidToken { + redirect action: 'createAccount' } } diff --git a/grails-app/controllers/au/org/ala/userdetails/RoleBasedInterceptor.groovy b/grails-app/controllers/au/org/ala/userdetails/RoleBasedInterceptor.groovy index 846a10ec..e7f621bb 100644 --- a/grails-app/controllers/au/org/ala/userdetails/RoleBasedInterceptor.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/RoleBasedInterceptor.groovy @@ -39,9 +39,18 @@ class RoleBasedInterceptor { if (method && (controllerClass.isAnnotationPresent(PreAuthorise) || method.isAnnotationPresent(PreAuthorise))) { boolean result = true + PreAuthorise pa = method.getAnnotation(PreAuthorise) ?: controllerClass.getAnnotation(PreAuthorise) response.withFormat { - html { - PreAuthorise pa = method.getAnnotation(PreAuthorise) ?: controllerClass.getAnnotation(PreAuthorise) + json { + if (!authorisedSystemService.isAuthorisedRequest(request, response, pa.requiredRole(), pa.requiredScope())) { + log.warn("Denying access to $actionName from remote addr: ${request.remoteAddr}, remote host: ${request.remoteHost}") + response.status = HttpStatus.SC_UNAUTHORIZED + render(['error': "Unauthorized"] as JSON) + + result = false + } + } + '*' { def requiredRole = pa.requiredRole() def inRole = request?.isUserInRole(requiredRole) @@ -52,16 +61,6 @@ class RoleBasedInterceptor { result = false } } - - json { - if (!authorisedSystemService.isAuthorisedSystem(request)) { - log.warn("Denying access to $actionName from remote addr: ${request.remoteAddr}, remote host: ${request.remoteHost}") - response.status = HttpStatus.SC_UNAUTHORIZED - render(['error': "Unauthorized"] as JSON) - - result = false - } - } } return result } diff --git a/grails-app/controllers/au/org/ala/userdetails/UrlMappings.groovy b/grails-app/controllers/au/org/ala/userdetails/UrlMappings.groovy index b657624a..d8641f6d 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UrlMappings.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UrlMappings.groovy @@ -26,6 +26,7 @@ class UrlMappings { "/myprofile/"(controller: 'profile') "/myprofile"(controller: 'profile') "/profile/$action?"(controller: 'profile') + "/apiKey"(controller:'apiKey', action: 'index') "/external/flickr"(controller: 'externalSite', action: 'flickr') "/ws/flickr"(controller: 'externalSite', action: 'flickr') @@ -66,6 +67,12 @@ class UrlMappings { "/admin/$controller/$action\\?"() + + + "/ws/token"(controller: 'apiKey', action: 'jwt') + "/ws/jwt"(controller: 'apiKey', action: 'jwt') + "/ws/apikey/$apiKey"(controller: 'apiKey', action: 'validate') + "/logout/logout"(controller: "logout", action: 'logout') "/"(view:"/index") "500"(view:'/error') diff --git a/grails-app/controllers/au/org/ala/userdetails/UserController.groovy b/grails-app/controllers/au/org/ala/userdetails/UserController.groovy index 17687975..893f4751 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserController.groovy @@ -16,6 +16,7 @@ package au.org.ala.userdetails import au.org.ala.auth.PreAuthorise +import grails.gorm.transactions.Transactional import org.springframework.dao.DataIntegrityViolationException @PreAuthorise @@ -43,7 +44,7 @@ class UserController { [userInstance: new User(params)] } - + @Transactional def save() { def userInstance = new User(params) if (params.locked == null) userInstance.locked = false @@ -85,6 +86,7 @@ class UserController { [userInstance: userInstance, props:userInstance.propsAsMap()] } + @Transactional def update(Long id, Long version) { def userInstance = User.get(id) if (!userInstance) { diff --git a/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy b/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy index a8ce1859..936dd61e 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy @@ -17,17 +17,74 @@ package au.org.ala.userdetails import au.org.ala.cas.encoding.CloseShieldWriter import au.org.ala.userdetails.marshaller.UserMarshaller +import au.org.ala.web.UserDetails +import com.fasterxml.jackson.annotation.JsonIgnoreProperties import grails.converters.JSON +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.Parameter +import io.swagger.v3.oas.annotations.enums.ParameterIn +import io.swagger.v3.oas.annotations.media.ArraySchema +import io.swagger.v3.oas.annotations.media.Content +import io.swagger.v3.oas.annotations.media.Schema +import io.swagger.v3.oas.annotations.parameters.RequestBody +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.security.SecurityRequirement import org.hibernate.ScrollableResults +import javax.ws.rs.Consumes +import javax.ws.rs.Path +import javax.ws.rs.Produces + +import static io.swagger.v3.oas.annotations.enums.ParameterIn.QUERY + +@Path("userDetails") class UserDetailsController { static allowedMethods = [getUserDetails: "POST", getUserList: "POST", getUserListWithIds: "POST", getUserListFull: "POST", getUserDetailsFromIdList: "POST"] def index() {} + @Operation( + method = "GET", + tags = "users", + summary = "Search users", + operationId = "search", + description = "Search for users by username, email or display name.", + parameters = [ + @Parameter( + name = "q", + in = QUERY, + description = "Search query for the user's username, email or display name", + required = true + ), + @Parameter( + name = "max", + in = QUERY, + description = "Maximum number of results to return", + required = false + ) + ], + responses = [ + @ApiResponse( + description = "Search results", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + array = @ArraySchema(schema = @Schema(implementation = UserDetails)) + ) + ] + ) + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + ) + @Path("search") + @Produces("application/json") def search() { def q = params['q'] + if (!q) { + render(status: 401, text: 'q parameter is required') + } def max = params.int('max', 10) User.withStatelessSession { session -> def c = User.createCriteria() @@ -43,6 +100,47 @@ class UserDetailsController { } } + @Operation( + method = "GET", + tags = "users", + summary = "Get Users by Role", + description = "Get Users by Role", + parameters = [ + @Parameter( + name = "role", + in = QUERY, + description = "The role to get users for", + required = true + ), + @Parameter( + name = "id", + in = QUERY, + description = "A list of user ids or usernames to limit the results to", + required = false + ), + @Parameter( + name = "includeProps", + in = QUERY, + description = "Whether to include additional user properties or not", + required = false + ) + ], + responses = [ + @ApiResponse( + description = "Search results", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + array = @ArraySchema(arraySchema = @Schema(implementation = UserDetails)) + ) + ] + ) + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + ) + @Path("byRole") + @Produces("application/json") def byRole() { def ids = params.list('id') def roleName = params.get('role', 'ROLE_USER') @@ -115,6 +213,41 @@ class UserDetailsController { response.flushBuffer() } + @Operation( + method = "POST", + tags = "users", + summary = "Get User Details", + description = "Get User Details", + parameters = [ + @Parameter( + name = "userName", + in = QUERY, + description = "The username of the user", + required = false + ), + @Parameter( + name = "includeProps", + in = QUERY, + description = "Whether to include additional user properties or not", + required = false + ) + ], + responses = [ + @ApiResponse( + description = "User Details", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + schema = @Schema(implementation = UserDetails) + ) + ] + ) + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + ) + @Path('getUserDetails') + @Produces('application/json') def getUserDetails() { def user @@ -147,18 +280,87 @@ class UserDetailsController { } + @Operation( + method = "POST", + tags = "users", + summary = "Get User List", + description = "Get a list of all users", + deprecated = true, + responses = [ + @ApiResponse( + description = "Returns a map of user's email addresses to their names", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + schema = @Schema(implementation = Map) // TODO Annotation processor does not like generic parameters on types, create a type that realizes Map + ) + ] + ) + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + ) + @Deprecated + @Path("getUserList") + @Produces("application/json") def getUserList() { def users = User.findNameAndEmailWhereEmailIsNotNull() def map = users.collectEntries { [(it[0].toLowerCase()): "${it[1]?:""} ${it[2]?:""}"]} render(map as JSON, contentType: "application/json") } + @Operation( + method = "POST", + tags = "users", + summary = "Get User List With Ids", + description = "Get a list of all users by their user id", + deprecated = true, + responses = [ + @ApiResponse( + description = "Returns a map of user's ids to their names", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + schema = @Schema(implementation = Map) + ) + ] + ) + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + ) + @Deprecated + @Path("getUserListWithIds") + @Produces("application/json") def getUserListWithIds() { def users = User.findIdFirstAndLastName() def map = users.collectEntries { [(it[0]), "${it[1]?:""} ${it[2]?:""}"] } render(map as JSON, contentType: "application/json") } + @Operation( + method = "POST", + tags = "users", + summary = "Get User List With Ids", + description = "Get a list of all users by their user id", + deprecated = true, + responses = [ + @ApiResponse( + description = "User Details", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + array = @ArraySchema(schema = @Schema(implementation = UserDetails)) + ) + ] + ) + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + ) + @Deprecated + @Path("getUserListFull") + @Produces("application/json") def getUserListFull() { def details = User.findUserDetails().collect { [id: it[0], firstName: it[1]?:"", lastName: it[2]?:"", userName: it[3]?:"", email: it[4]?:""] @@ -166,6 +368,37 @@ class UserDetailsController { render(details as JSON, contentType: "application/json") } + @Operation( + method = "POST", + tags = "users", + operationId = "getUserDetailsFromIdList", + summary = "Get User Details by id list", + description = "Get a list of user details for a list of user ids", + requestBody = @RequestBody( + description = "The list of user ids to request and whether to include extended properties", + required = true, + content = @Content( + mediaType = 'application/json', + schema = @Schema(implementation = GetUserDetailsFromIdListRequest) + ) + ), + responses = [ + @ApiResponse( + description = "User Details", + responseCode = "200", + content = [ + @Content( + mediaType = "application/json", + schema = @Schema(implementation = GetUserDetailsFromIdListResponse) + ) + ] + ) + ], + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + ) + @Path("getUserDetailsFromIdList") + @Consumes("application/json") + @Produces("application/json") def getUserDetailsFromIdList() { def req = request.JSON @@ -209,4 +442,19 @@ class UserDetailsController { } } + + // classes used for the OpenAPI definition generator + @JsonIgnoreProperties('metaClass') + static class GetUserDetailsFromIdListRequest { + boolean includeProps = false + List userIds = [] + } + + @JsonIgnoreProperties('metaClass') + static class GetUserDetailsFromIdListResponse { + boolean success = false + Map users + List invalidIds + String message + } } \ No newline at end of file diff --git a/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy b/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy index f09aca50..2f56e097 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy @@ -30,7 +30,7 @@ class UserDetailsWebServicesInterceptor { } boolean before() { - if (!authorisedSystemService.isAuthorisedSystem(request)) { + if (!authorisedSystemService.isAuthorisedRequest(request, response, null, 'users:read')) { log.warn("Denying access to $actionName from remote addr: ${request.remoteAddr}, remote host: ${request.remoteHost}") response.sendError(HttpStatus.SC_UNAUTHORIZED) diff --git a/grails-app/controllers/au/org/ala/userdetails/UserRoleController.groovy b/grails-app/controllers/au/org/ala/userdetails/UserRoleController.groovy index 4b559e52..168bf18d 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserRoleController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserRoleController.groovy @@ -76,10 +76,12 @@ class UserRoleController { def user = User.get(params.userId.toLong()) def role = Role.findByRole(params.role.id) - UserRole ur = new UserRole() - ur.user = user - ur.role = role - ur.save(flush:true) + UserRole.withNewTransaction { + UserRole ur = new UserRole() + ur.user = user + ur.role = role + ur.save() + } redirect(action: "show", controller: 'user', id: user.id) } @@ -89,21 +91,22 @@ class UserRoleController { def user = User.get(params.userId.toLong()) def role = Role.get(params.role) - def userRoleInstance = UserRole.findByUserAndRole(user, role) - if (!userRoleInstance) { - flash.message = message(code: 'default.not.found.message', args: [message(code: 'userRole.label', default: 'UserRole'), role.role]) - redirect(controller:"user", action: "edit", id:user.id) - return - } - - try { - userRoleInstance.delete(flush: true) - flash.message = message(code: 'default.deleted.message', args: [message(code: 'userRole.label', default: 'UserRole'), role.role]) - redirect(controller:"user", action: "edit", id:user.id) - } - catch (DataIntegrityViolationException e) { - flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'userRole.label', default: 'UserRole'), role.role]) - redirect(action: "show", id: id) + UserRole.withNewTransaction { + def userRoleInstance = UserRole.findByUserAndRole(user, role) + if (!userRoleInstance) { + flash.message = message(code: 'default.not.found.message', args: [message(code: 'userRole.label', default: 'UserRole'), role.role]) + redirect(controller:"user", action: "edit", id:user.id) + return + } + try { + userRoleInstance.delete(flush: true) + flash.message = message(code: 'default.deleted.message', args: [message(code: 'userRole.label', default: 'UserRole'), role.role]) + redirect(controller:"user", action: "edit", id:user.id) + } + catch (DataIntegrityViolationException e) { + flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'userRole.label', default: 'UserRole'), role.role]) + redirect(action: "show", id: id) + } } } } diff --git a/grails-app/domain/au/org/ala/userdetails/ApiKey.groovy b/grails-app/domain/au/org/ala/userdetails/ApiKey.groovy new file mode 100644 index 00000000..8203d80f --- /dev/null +++ b/grails-app/domain/au/org/ala/userdetails/ApiKey.groovy @@ -0,0 +1,23 @@ +package au.org.ala.userdetails + +import java.sql.Timestamp + +/** + * API key implementation + */ +class ApiKey implements Serializable { + static belongsTo = [user: User] + String apiKey // not encoded + String apiSecret // encoded + Date dateCreated + Date lastUpdated + + static mapping = { + table 'api_key' + user column: 'userid' + } + static constraints = { + apiKey nullable: false, blank: false + apiSecret nullable: true + } +} diff --git a/grails-app/domain/au/org/ala/userdetails/UserProperty.groovy b/grails-app/domain/au/org/ala/userdetails/UserProperty.groovy index cfca48f0..3efc421e 100644 --- a/grails-app/domain/au/org/ala/userdetails/UserProperty.groovy +++ b/grails-app/domain/au/org/ala/userdetails/UserProperty.groovy @@ -15,6 +15,9 @@ package au.org.ala.userdetails +import com.fasterxml.jackson.annotation.JsonIgnoreProperties + +@JsonIgnoreProperties(['metaClass','errors']) class UserProperty implements Serializable { User user diff --git a/grails-app/i18n/messages.properties b/grails-app/i18n/messages.properties index 2b441aed..4063d11f 100644 --- a/grails-app/i18n/messages.properties +++ b/grails-app/i18n/messages.properties @@ -64,7 +64,8 @@ updatePasswordCommand.password.minSize.error=Your password must be at least {3} updatePasswordCommand.reenteredPassword.validator.error=The supplied passwords do not match updatePasswordCommand.authKey.blank.error=There was a error processing your request. Please begin the password reset process again. create.account.title=Create your account -create.account.already-reg=A user is already registered with the email address {0} however it is currently disabled. +create.account.already-reg=This account {0} is not yet activated. Please check your email for account activation instructions or contact support. +create.account.locked=A user is already registered with the email address {0} however it is currently disabled. create.account.already.registered=A user is already registered with the email address create.account.login.with.username=To login with this user name, create.account.click.here=click here @@ -74,6 +75,7 @@ create.account.privacy.link=Privacy Policy create.account.first.name=First name create.account.last.name=Last name create.account.email.address=Email address +create.account.confirm.email.address=Confirm email address create.account.password=Password create.account.reentered.password=Reentered password create.account.affiliation=What is your primary affiliation? @@ -87,6 +89,8 @@ create.account.btn=Create account create.account.button.twice=Please don't click the button twice. create.account.password.is.required=Password is required! create.account.email.is.required=Email is required! +create.account.confirm.email.is.required=Please confirm your email address +create.account.confirm.email.mismatch=Email addresses don't match, please double check your address is correct. create.account.activation.description=An "account activation" link will be emailed to the address provided. You need to click this link, in order to complete the registration process. Note, you may need to check you spam/junk mail folder, as activation emails sometimes get caught by mail filters. create.account.activation.description.ala=You can find more information and further instructions in this help article. create.account.edit.account=Edit your account @@ -103,7 +107,7 @@ account.activated.thank.you.for.registering=Thank you for registering with the { account.activated.if.you.have.any.problems=If you have any problems please email {0}. account.activated.successful.title=Account created account.activated.successful.congratulations=Congratulations! Your account has been activated successfully. -account.activated.successful.please.login=Please login in order to access My Profile. +account.activated.successful.please.login=Please login in order to access My Profile. account.activated.created.title=Account created account.activated.created.please.check.your.email=Please check your email to activate your account and complete the registration process! account.activated.created.thank.you.for.registering=Thank you for registering with the {0}. @@ -120,7 +124,7 @@ auth.key.expired.header=Reset password link expired auth.key.expired.initial.description=This link to start the process to reset your password has expired. auth.key.expired.mailto=If problems persist, please contact {0} duplicate.submit.mailto=If problems persist, please contact {0} -duplicate.submit.reset.successfully=It is likely that your password has been reset successfully, please try and login here using your new password. +duplicate.submit.reset.successfully=It is likely that your password has been reset successfully, please try and login here using your new password. duplicate.submit.description.new.password=The system has detected more than one password reset attempt. This can happen if the "Set my password" button is clicked more than once on the page you entered your new password. duplicate.submit.results=Results of resetting your password duplicate.submit.title=Reset password form submission @@ -146,7 +150,7 @@ start.password.reset.header=Please check your email start.password.reset.description=We have sent an email to {0} with a link to reset your password. start.password.reset.description.click=Please click the link in the email to start the process of providing a new password. email.greeting=Dear -email.logo.title=visit the ALA website +email.logo.title=visit the Atlas website email.logo.alt=ALA logo accessing.account.title=Accessing your account accessing.account.header=Accessing your account @@ -185,15 +189,16 @@ default.button.edit.delete.user.confirm.message=Are you sure want to delete this inaturalist.fail.link=iNaturalist account link failed inaturalist.fail.description=We were unable to link to your iNaturalist account. If this problem persists, please email {0} myprofile.hello=Hello {0} ! -myprofile.update=Update your profile +myprofile.update=Update my details myprofile.your.timeline=View your timeline of sightings recorded through the Atlas (My sightings) -myprofile.spatial.portal=Tabulate and graph all functions you've used in the Spatial Portal -myprofile.tasks.digivol=View your tasks on the DigiVol Portal -myprofile.uploaded.species.lists=View your uploaded species lists -myprofile.view.records.you.annotated=View records you have annotated -myprofile.your.downloads=View your downloaded records -myprofile.your.datasets=View your uploaded datasets -myprofile.your.alerts=Manage your alerts +myprofile.spatial.portal=My analyses +myprofile.tasks.digivol=My DigiVol +myprofile.uploaded.species.lists=My species lists +myprofile.view.records.you.annotated=My record annotations +myprofile.your.downloads=My downloads +myprofile.your.datasets=My uploaded datasets +myprofile.your.alerts=My alerts +myprofile.biocollect=My BioCollect myprofile.admin.tools=Admin tools myprofile.external.site.linkages=External site linkages myprofile.flickr.title=Flickr @@ -219,3 +224,24 @@ create.account.motivation.2=You don't have to set and remember yet another passw create.account.motivation.3=Your account will be activated without going through verification emails create.account.motivation.4=Overall you will save time create.account.motivation.footer=Of course if you don't have an account with such providers or prefer to use a different email you still can create an account with us by filling in the information on the left. +myprofile.your.alerts.desc=Update your alert settings for emails you receive from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey=My API key +myprofile.apikey.desc=Get your API key to access web services in Atlas using R, Python or your language of choice +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated Digital Object Identifiers (DOI). +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded or edited in the Atlas +myprofile.view.records.you.annotated.desc=View records you have annotated, indicating issues with geospatial information or taxonomy +myprofile.your.datasets.desc=Datasets you have uploaded in the Atlas' Sandbox +myprofile.biocollect.desc=View the projects, surveys and records you have contributed to BioCollect +myprofile.tasks.digivol.desc=View transcriptions you have completed, validated and the expeditions you have participated in +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile=My profile +myapikey=My API key +myprofile.yourapikey=Your API key +#myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret you will be able to generate a JSON Web Token (JWT), giving you access additional services in the Atlas. +#myprofile.yourapikey.desc2=You can generate an API aecret using the button below. Once its generated you will not be able to access this again so please keep it safe. +myprofile.yourapikey.desc1=This will can be used in your application to submit requests to the Atlas. +myprofile.yourapikey.desc2=This key should be sent as an HTTP header, along with JSON Web Token (JWT), giving you access additional services. diff --git a/grails-app/i18n/messages_ca.properties b/grails-app/i18n/messages_ca.properties index 650b1151..ce70d049 100644 --- a/grails-app/i18n/messages_ca.properties +++ b/grails-app/i18n/messages_ca.properties @@ -63,3 +63,18 @@ updatePasswordCommand.password.blank.error=Si us plau, introduïu una contraseny updatePasswordCommand.password.minSize.error=La vostra contrasenya ha de tenir com a mínim {3} caràcters updatePasswordCommand.reenteredPassword.validator.error=Les contrasenyes proporcionades no coincideixen updatePasswordCommand.authKey.blank.error=S'ha produït un error en processar la vostra sol·licitud. Si us plau, torneu a iniciar el procés de restabliment de la contrasenya. +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_cs_CZ.properties b/grails-app/i18n/messages_cs_CZ.properties index c617dca0..b9324034 100644 --- a/grails-app/i18n/messages_cs_CZ.properties +++ b/grails-app/i18n/messages_cs_CZ.properties @@ -52,4 +52,19 @@ typeMismatch.java.lang.Integer=Položka {0} musí být validní číslo typeMismatch.java.lang.Long=Položka {0} musí být validní číslo typeMismatch.java.lang.Short=Položka {0} musí být validní číslo typeMismatch.java.math.BigDecimal=Položka {0} musí být validní číslo -typeMismatch.java.math.BigInteger=Položka {0} musí být validní číslo \ No newline at end of file +typeMismatch.java.math.BigInteger=Položka {0} musí být validní číslo +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. \ No newline at end of file diff --git a/grails-app/i18n/messages_da.properties b/grails-app/i18n/messages_da.properties index e7ffb1b7..687536df 100644 --- a/grails-app/i18n/messages_da.properties +++ b/grails-app/i18n/messages_da.properties @@ -53,4 +53,19 @@ typeMismatch.java.lang.Long=Feltet {0} skal være et valid tal typeMismatch.java.lang.Short=Feltet {0} skal være et valid tal typeMismatch.java.math.BigDecimal=Feltet {0} skal være et valid tal typeMismatch.java.math.BigInteger=Feltet {0} skal være et valid tal +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_de.properties b/grails-app/i18n/messages_de.properties index 14661724..1c605fd4 100644 --- a/grails-app/i18n/messages_de.properties +++ b/grails-app/i18n/messages_de.properties @@ -63,3 +63,18 @@ updatePasswordCommand.password.blank.error=Bitte geben Sie ein Passwort ein updatePasswordCommand.password.minSize.error=Das Passwort muss mindestens aus {3} Stellen bestehen updatePasswordCommand.reenteredPassword.validator.error=Die eingegebenen Passwörter stimmen nicht überein updatePasswordCommand.authKey.blank.error=Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten. Bitte starten Sie den Vorgang zum Zurücksetzen des Passworts erneut. +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_de_AT.properties b/grails-app/i18n/messages_de_AT.properties index a26004d7..4df661e3 100644 --- a/grails-app/i18n/messages_de_AT.properties +++ b/grails-app/i18n/messages_de_AT.properties @@ -63,3 +63,18 @@ updatePasswordCommand.password.blank.error=Bitte geben Sie ein Passwort ein updatePasswordCommand.password.minSize.error=Das Passwort muss mindestens aus {3} Stellen bestehen updatePasswordCommand.reenteredPassword.validator.error=Die eingegebenen Passwörter stimmen nicht überein updatePasswordCommand.authKey.blank.error=Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten. Bitte starten Sie den Vorgang zum Zurücksetzen des Passworts erneut. +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_de_LU.properties b/grails-app/i18n/messages_de_LU.properties index 226ea703..d9342071 100644 --- a/grails-app/i18n/messages_de_LU.properties +++ b/grails-app/i18n/messages_de_LU.properties @@ -63,3 +63,18 @@ updatePasswordCommand.password.blank.error=Bitte geben Sie ein Passwort ein updatePasswordCommand.password.minSize.error=Ihr Passwort muss mindestens {3} Zeichen lang sein updatePasswordCommand.reenteredPassword.validator.error=Die angegebenen Passwörter stimmen nicht überein updatePasswordCommand.authKey.blank.error=Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten. Bitte starten Sie den Vorgang zum Zurücksetzen des Passworts erneut. +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_es.properties b/grails-app/i18n/messages_es.properties index 042174fd..e2229a59 100644 --- a/grails-app/i18n/messages_es.properties +++ b/grails-app/i18n/messages_es.properties @@ -99,7 +99,7 @@ account.activated.thank.you.for.registering=Gracias por registrarte en {0}. Para account.activated.if.you.have.any.problems=Si tienes cualquier problema, por favor escribe a {0}. account.activated.successful.title=Cuenta creada account.activated.successful.congratulations=¡Enhorabuena! Tu cuenta se ha activado correctamente. -account.activated.successful.please.login=Por favor accede para ir a Mi Perfíl. +account.activated.successful.please.login=Por favor accede para ir a Mi Perfíl. account.activated.created.title=Cuenta creada account.activated.created.please.check.your.email=¡Por favor, comprueba tu correo para activar tu cuenta y completar el proceso de registro! account.activated.created.thank.you.for.registering=Gracias por registrarte en {0}. @@ -116,7 +116,7 @@ auth.key.expired.header=Enlace de restablecer contraseña expirado auth.key.expired.initial.description=Este enlace para comenzar el proceso de restablecer tu contraseña ha expirado. auth.key.expired.mailto=Si el problem persiste, por favor contacta con {0} duplicate.submit.mailto=Si el problem persiste, por favor contacta con {0} -duplicate.submit.reset.successfully=Parece que tu contraseña se ha restablecido correctamente, por favor intenta acceder aquí usando tu nueva contraseña. +duplicate.submit.reset.successfully=Parece que tu contraseña se ha restablecido correctamente, por favor intenta acceder aquí usando tu nueva contraseña. duplicate.submit.description.new.password=El sistema ha detectado más de un intento de resetear la contraseña. Esteo suceder si el botón de "Establecer mi contraseña" se pulsa más de una vez en la página en la que introduciste tu nueva contraseña. duplicate.submit.results=Resultado de restablecer tu contraseña duplicate.submit.title=Formulario de envío de restablecimiento de contraseña @@ -204,3 +204,18 @@ create.account.motivation.2=No tienes que establecer y recordar otra contraseña create.account.motivation.3=Tu cuenta se activará sin tener que verificar correos. create.account.motivation.4=En general te ahorrá tiempo. create.account.motivation.footer=Por supuesto si no tienes una cuenta con estos proveedores o prefieres usar un correo diferente aún puedes crearte una cuenta con nosotros rellenando la información de la izquierda. +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_fr.properties b/grails-app/i18n/messages_fr.properties index 91c87e95..08e58e1d 100644 --- a/grails-app/i18n/messages_fr.properties +++ b/grails-app/i18n/messages_fr.properties @@ -19,6 +19,21 @@ default.not.unique.message=La propriété [{0}] de la classe [{1}] avec la valeu default.paginate.prev=Précédent default.paginate.next=Suivant +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_it.properties b/grails-app/i18n/messages_it.properties index c62a4d55..c7a410aa 100644 --- a/grails-app/i18n/messages_it.properties +++ b/grails-app/i18n/messages_it.properties @@ -19,6 +19,21 @@ default.not.unique.message=La proprietà [{0}] della classe [{1}] con valore [{2 default.paginate.prev=Precedente default.paginate.next=Successivo +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_ja.properties b/grails-app/i18n/messages_ja.properties index 27cb98a3..8734e286 100644 --- a/grails-app/i18n/messages_ja.properties +++ b/grails-app/i18n/messages_ja.properties @@ -54,4 +54,19 @@ typeMismatch.java.lang.Long={0}は有効な数値でなければなりません typeMismatch.java.lang.Short={0}は有効な数値でなければなりません。 typeMismatch.java.math.BigDecimal={0}は有効な数値でなければなりません。 typeMismatch.java.math.BigInteger={0}は有効な数値でなければなりません。 +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_nl.properties b/grails-app/i18n/messages_nl.properties index 6430fa26..be8aaad7 100644 --- a/grails-app/i18n/messages_nl.properties +++ b/grails-app/i18n/messages_nl.properties @@ -53,4 +53,19 @@ typeMismatch.java.lang.Long=Attribuut {0} is geen geldig nummer typeMismatch.java.lang.Short=Attribuut {0} is geen geldig nummer typeMismatch.java.math.BigDecimal=Attribuut {0} is geen geldig nummer typeMismatch.java.math.BigInteger=Attribuut {0} is geen geldig nummer +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_pt_BR.properties b/grails-app/i18n/messages_pt_BR.properties index 72017a85..147b34ef 100644 --- a/grails-app/i18n/messages_pt_BR.properties +++ b/grails-app/i18n/messages_pt_BR.properties @@ -63,3 +63,18 @@ updatePasswordCommand.password.blank.error=Por favor, digite uma senha updatePasswordCommand.password.minSize.error=Sua senha deve ter pelo menos {3} caracteres de comprimento updatePasswordCommand.reenteredPassword.validator.error=As senhas fornecidas não correspondem updatePasswordCommand.authKey.blank.error=Ocorreu um erro ao processar o pedido. Por favor, inicie novamente o processo de redefinição de senha. +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_pt_PT.properties b/grails-app/i18n/messages_pt_PT.properties index ec5980c6..e34a0fe9 100644 --- a/grails-app/i18n/messages_pt_PT.properties +++ b/grails-app/i18n/messages_pt_PT.properties @@ -33,4 +33,19 @@ typeMismatch.java.lang.Long=O campo {0} deve ser um número valido. typeMismatch.java.lang.Short=O campo {0} deve ser um número válido. typeMismatch.java.math.BigDecimal=O campo {0} deve ser um número válido. typeMismatch.java.math.BigInteger=O campo {0} deve ser um número válido. +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_ru.properties b/grails-app/i18n/messages_ru.properties index 05560b75..44e37947 100644 --- a/grails-app/i18n/messages_ru.properties +++ b/grails-app/i18n/messages_ru.properties @@ -33,4 +33,19 @@ typeMismatch.java.lang.Long=Значение поля {0} не является typeMismatch.java.lang.Short=Значение поля {0} не является допустимым числом typeMismatch.java.math.BigDecimal=Значение поля {0} не является допустимым числом typeMismatch.java.math.BigInteger=Значение поля {0} не является допустимым числом +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_sv.properties b/grails-app/i18n/messages_sv.properties index 655fc7a2..6541898f 100644 --- a/grails-app/i18n/messages_sv.properties +++ b/grails-app/i18n/messages_sv.properties @@ -53,4 +53,19 @@ typeMismatch.java.lang.Long=Värdet {0} måste vara ett giltigt heltal typeMismatch.java.lang.Short=Värdet {0} måste vara ett giltigt heltal typeMismatch.java.math.BigDecimal=Värdet {0} måste vara ett giltigt nummer typeMismatch.java.math.BigInteger=Värdet {0} måste vara ett giltigt heltal +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_th.properties b/grails-app/i18n/messages_th.properties index 4f4076d1..2d22f45b 100644 --- a/grails-app/i18n/messages_th.properties +++ b/grails-app/i18n/messages_th.properties @@ -53,3 +53,18 @@ typeMismatch.java.lang.Long=คุณสมบัติ '{0}' จะต้อง typeMismatch.java.lang.Short=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Short typeMismatch.java.math.BigDecimal=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท BigDecimal typeMismatch.java.math.BigInteger=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท BigInteger +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.update.desc=Update your email address, organisation and contact details +userdetails.index.reset.password.desc=Reset your Atlas password +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +my.profile=My profile +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. diff --git a/grails-app/i18n/messages_zh_CN.properties b/grails-app/i18n/messages_zh_CN.properties index 782580b0..2e785dca 100644 --- a/grails-app/i18n/messages_zh_CN.properties +++ b/grails-app/i18n/messages_zh_CN.properties @@ -16,3 +16,18 @@ default.not.unique.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u default.null.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3Anull default.paginate.next=\u4E0B\u9875 default.paginate.prev=\u4E0A\u9875 +my.profile=My profile +myprofile.admin.tools.desc=Administration tools for the Atlas +myprofile.apikey.desc=Get your API key to access web services in Atlas through galah or your own code +myprofile.biocollect.desc=View tasks the records you have added to BioCollect +myprofile.spatial.portal.desc=Tabulate and graph all functions you've used in the Spatial Portal +myprofile.tasks.digivol.desc=View tasks you have completed in DigiVol +myprofile.update.desc=Update your email address, organisation and contact details +myprofile.uploaded.species.lists.desc=View species checklists and traits you have uploaded. +myprofile.view.records.you.annotated.desc=View records you have annotated +myprofile.your.alerts.desc=Update your alert settings for email you received from the Atlas +myprofile.your.datasets.desc=Datasets you have uploaded +myprofile.your.downloads.desc=View your recent downloads and the associated DOIs. +myprofile.yourapikey.desc1=There are many like this, but this one is yours. Together with the API secret\n you will be able to access additional services in the Atlas. +myprofile.yourapikey.desc2=You can generate an API key secret using the button below. +userdetails.index.reset.password.desc=Reset your Atlas password diff --git a/grails-app/init/au/org/ala/userdetails/Application.groovy b/grails-app/init/au/org/ala/userdetails/Application.groovy index 47062625..f212d5ca 100644 --- a/grails-app/init/au/org/ala/userdetails/Application.groovy +++ b/grails-app/init/au/org/ala/userdetails/Application.groovy @@ -20,15 +20,27 @@ import grails.boot.GrailsApp import grails.boot.config.GrailsAutoConfiguration import groovy.util.logging.Slf4j import okhttp3.OkHttpClient -import org.springframework.boot.actuate.health.DataSourceHealthIndicator -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression +import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator +import org.springframework.boot.actuate.mongo.MongoHealthIndicator import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration +import org.springframework.boot.autoconfigure.mongo.MongoProperties +import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean -import org.springframework.session.data.redis.config.ConfigureRedisAction +import org.springframework.context.annotation.Configuration +import org.springframework.context.annotation.Import +import org.springframework.data.mongodb.core.MongoOperations +import org.springframework.data.mongodb.core.MongoTemplate +import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories +import org.springframework.session.data.mongo.JdkMongoSessionConverter +import org.springframework.session.data.mongo.config.annotation.web.http.EnableMongoHttpSession import retrofit2.Retrofit import retrofit2.converter.moshi.MoshiConverterFactory import javax.sql.DataSource +import java.time.Duration +import java.util.stream.Collectors @Slf4j class Application extends GrailsAutoConfiguration { @@ -36,12 +48,6 @@ class Application extends GrailsAutoConfiguration { GrailsApp.run(Application, args) } - @ConditionalOnProperty('spring.session.disable-redis-config-action') - @Bean - ConfigureRedisAction configureRedisAction() { - ConfigureRedisAction.NO_OP - } - @Bean DataSourceHealthIndicator dataSourceHealthIndicator(DataSource dataSource) { new DataSourceHealthIndicator(dataSource) @@ -53,4 +59,21 @@ class Application extends GrailsAutoConfiguration { return new Retrofit.Builder().baseUrl(baseUrl).client(new OkHttpClient()).addConverterFactory(MoshiConverterFactory.create()).build().create(RecaptchaClient) } + @Configuration + @ConditionalOnProperty(value = "spring.session.enabled", havingValue = "true", matchIfMissing = false) + @Import(MongoAutoConfiguration) // unsure if this is disabled by grails? + @EnableMongoHttpSession + @EnableConfigurationProperties(MongoProperties) + static class MongoSessionConfig { + +// @Bean +// JdkMongoSessionConverter jdkMongoSessionConverter() { +// return new JdkMongoSessionConverter(Duration.ofMinutes(15L)); +// } + @Bean // TODO is this necessary? + MongoHealthIndicator mongoHealthIndicator(MongoTemplate mongoTemplate) { + new MongoHealthIndicator(mongoTemplate) + } + } + } \ No newline at end of file diff --git a/grails-app/init/au/org/ala/userdetails/UserDetailsCacheConfig.groovy b/grails-app/init/au/org/ala/userdetails/UserDetailsCacheConfig.groovy deleted file mode 100644 index 3ebf9bd2..00000000 --- a/grails-app/init/au/org/ala/userdetails/UserDetailsCacheConfig.groovy +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2022 Atlas of Living Australia - * All Rights Reserved. - * - * The contents of this file are subject to the Mozilla Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - */ - -package au.org.ala.userdetails - -config = { - defaults { - eternal false - overflowToDisk false - maxElementsInMemory 10000 - timeToLiveSeconds 3600 - } - cache { - name 'dailyCache' - timeToLiveSeconds (3600 * 24) - } -} \ No newline at end of file diff --git a/grails-app/services/au/org/ala/userdetails/AuthorisedSystemService.groovy b/grails-app/services/au/org/ala/userdetails/AuthorisedSystemService.groovy index 1d07c782..f27d7af4 100644 --- a/grails-app/services/au/org/ala/userdetails/AuthorisedSystemService.groovy +++ b/grails-app/services/au/org/ala/userdetails/AuthorisedSystemService.groovy @@ -15,19 +15,98 @@ package au.org.ala.userdetails +import au.org.ala.ws.security.JwtProperties +import org.pac4j.core.config.Config +import org.pac4j.core.context.WebContext +import org.pac4j.core.profile.ProfileManager +import org.pac4j.core.profile.UserProfile +import org.pac4j.core.util.FindBest +import org.pac4j.http.client.direct.DirectBearerAuthClient +import org.pac4j.jee.context.JEEContextFactory +import org.springframework.beans.factory.annotation.Autowired + import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse class AuthorisedSystemService { + @Autowired + JwtProperties jwtProperties + @Autowired(required = false) + Config config + @Autowired(required = false) + DirectBearerAuthClient directBearerAuthClient + def isAuthorisedSystem(HttpServletRequest request){ - def host = request.getHeader("x-forwarded-for") - if(host == null){ - host = request.getRemoteHost() - } + def host = request.getRemoteAddr() log.debug("RemoteHost: " + request.getRemoteHost()) log.debug("RemoteAddr: " + request.getRemoteAddr()) log.debug("host using: " + host) return host != null && AuthorisedSystem.findByHost(host) } + + /** + * Validate a JWT Bearer token instead of the API key. + * @param fallbackToLegacy Whether to fall back to legacy authorised systems if the JWT is not present. + * @param role The user role required to continue + * @param scope The JWT scope required for the request to be authorized + * @return true + */ + def isAuthorisedRequest(HttpServletRequest request, HttpServletResponse response, String role, String scope) { + def result = false + + if (jwtProperties.enabled) { + def context = context(request, response) + ProfileManager profileManager = new ProfileManager(context, config.sessionStore) + profileManager.setConfig(config) + + def credentials = directBearerAuthClient.getCredentials(context, config.sessionStore) + if (credentials.isPresent()) { + def profile = directBearerAuthClient.getUserProfile(credentials.get(), context, config.sessionStore) + if (profile.isPresent()) { + def userProfile = profile.get() + profileManager.save( + directBearerAuthClient.getSaveProfileInSession(context, userProfile), + userProfile, + directBearerAuthClient.isMultiProfile(context, userProfile) + ) + + result = true + if (role) { + result = userProfile.roles.contains(role) + } + + if (result && scope) { + result = userProfile.permissions.contains(scope) || profileHasScope(userProfile, scope) + } + } + } else if (jwtProperties.fallbackToLegacyBehaviour) { + result = isAuthorisedSystem(request) + } + } else { + result = isAuthorisedSystem(request) + } + return result + } + + private boolean profileHasScope(UserProfile userProfile, String scope) { + def scopes = userProfile.attributes['scope'] + def result = false + if (scopes != null) { + if (scopes instanceof String) { + result = scopes.tokenize(',').contains(scope) + } else if (scopes.class.isArray()) { + result =scopes.any { it?.toString() == scope } + } else if (scopes instanceof Collection) { + result =scopes.any { it?.toString() == scope } + } + } + return result + } + + private WebContext context(request, response) { + final WebContext context = FindBest.webContextFactory(null, config, JEEContextFactory.INSTANCE).newContext(request, response) + return context + } } diff --git a/grails-app/services/au/org/ala/userdetails/EmailService.groovy b/grails-app/services/au/org/ala/userdetails/EmailService.groovy index 957e88d9..cd5d4c48 100644 --- a/grails-app/services/au/org/ala/userdetails/EmailService.groovy +++ b/grails-app/services/au/org/ala/userdetails/EmailService.groovy @@ -16,11 +16,14 @@ package au.org.ala.userdetails import au.org.ala.auth.PasswordResetFailedException +import grails.web.mapping.LinkGenerator class EmailService { def grailsApplication + LinkGenerator linkGenerator + static transactional = false def sendPasswordReset(user, authKey, emailSubject = null, emailTitle = null, emailBody1 = null, password = null) @@ -49,7 +52,7 @@ class EmailService { } try { sendMail { - from grailsApplication.config.emailSenderTitle+"<" + grailsApplication.config.emailSender + ">" + from grailsApplication.config.getProperty('emailSenderTitle')+"<" + grailsApplication.config.getProperty('emailSender') + ">" subject emailSubject to user.email body (view: '/email/resetPassword', @@ -65,12 +68,12 @@ class EmailService { def sendAccountActivation(user, authKey) throws PasswordResetFailedException { try { sendMail { - from grailsApplication.config.emailSenderTitle + "<" + grailsApplication.config.emailSender + ">" + from grailsApplication.config.getProperty('emailSenderTitle') + "<" + grailsApplication.config.getProperty('emailSender') + ">" subject "Activate your account" to user.email body(view: '/email/activateAccount', plugin: "email-confirmation", - model: [userName: user.firstName, link: getServerUrl() + "activateAccount/" + user.id + "/" + authKey, orgNameLong: grailsApplication.config.skin.orgNameLong] + model: [userName: user.firstName, link: getServerUrl() + "activateAccount/" + user.id + "/" + authKey, orgNameLong: grailsApplication.config.getProperty('skin.orgNameLong')] ) } } catch (Exception ex) { @@ -81,12 +84,12 @@ class EmailService { def sendAccountActivationSuccess(user, activatedAlerts) throws PasswordResetFailedException { try { sendMail { - from grailsApplication.config.emailSenderTitle + "<" + grailsApplication.config.emailSender + ">" + from grailsApplication.config.getProperty('emailSenderTitle') + "<" + grailsApplication.config.getProperty('emailSender') + ">" subject "Account activated successfully" to user.email body(view: '/email/activateAccountSuccess', plugin: "email-confirmation", - model: [userName: user.firstName, activatedAlerts: activatedAlerts, alertsUrl: grailsApplication.config.alerts.url] + model: [userName: user.firstName, activatedAlerts: activatedAlerts, alertsUrl: grailsApplication.config.getProperty('alerts.url')] ) } } catch (Exception ex) { @@ -97,12 +100,12 @@ class EmailService { def sendUpdateProfileSuccess(User user, List emailRecipients) throws PasswordResetFailedException { try { sendMail { - from grailsApplication.config.emailSenderTitle+"<" + grailsApplication.config.emailSender + ">" + from grailsApplication.config.getProperty('emailSenderTitle')+"<" + grailsApplication.config.getProperty('emailSender') + ">" subject "Account updated successfully" to (emailRecipients.toArray()) body (view: '/email/updateAccountSuccess', plugin:"email-confirmation", - model:[userName: user.firstName, support: grailsApplication.config.supportEmail] + model:[userName: user.firstName, support: grailsApplication.config.getProperty('supportEmail')] ) } } catch (Exception ex) { @@ -113,12 +116,12 @@ class EmailService { def sendGeneratedPassword(user, generatedPassword) throws PasswordResetFailedException { try { sendMail { - from grailsApplication.config.emailSenderTitle+"<" + grailsApplication.config.emailSender + ">" + from grailsApplication.config.getProperty('emailSenderTitle')+"<" + grailsApplication.config.getProperty('emailSender') + ">" subject "Accessing your account" to user.email body (view: '/email/accessAccount', plugin:"email-confirmation", - model:[userName: user.firstName, link: getLoginUrl(user.email), generatedPassword: generatedPassword] + model:[userName: user.firstName, link: getMyProfileUrl(), generatedPassword: generatedPassword] ) } } catch (Exception ex) { @@ -126,19 +129,13 @@ class EmailService { } } - def getLoginUrl(email){ - grailsApplication.config.security.cas.loginUrl + - "?email=" + email + - "&service=" + URLEncoder.encode(getMyProfileUrl(),"UTF-8") - } - def getMyProfileUrl(){ - grailsApplication.config.grails.serverURL + + grailsApplication.config.getProperty('grails.serverURL') + "/myprofile/" } def getServerUrl(){ - grailsApplication.config.grails.serverURL + + grailsApplication.config.getProperty('grails.serverURL') + "/registration/" } } diff --git a/grails-app/services/au/org/ala/userdetails/PasswordService.groovy b/grails-app/services/au/org/ala/userdetails/PasswordService.groovy index 32f29d23..f603a5ff 100644 --- a/grails-app/services/au/org/ala/userdetails/PasswordService.groovy +++ b/grails-app/services/au/org/ala/userdetails/PasswordService.groovy @@ -17,7 +17,7 @@ package au.org.ala.userdetails import au.org.ala.cas.encoding.BcryptPasswordEncoder import au.org.ala.cas.encoding.LegacyPasswordEncoder -import grails.transaction.Transactional +import grails.gorm.transactions.Transactional import org.apache.commons.lang3.RandomStringUtils import org.springframework.beans.factory.annotation.Value diff --git a/grails-app/services/au/org/ala/userdetails/UserService.groovy b/grails-app/services/au/org/ala/userdetails/UserService.groovy index 5b639fe2..0f3678da 100644 --- a/grails-app/services/au/org/ala/userdetails/UserService.groovy +++ b/grails-app/services/au/org/ala/userdetails/UserService.groovy @@ -24,6 +24,7 @@ import grails.gorm.transactions.Transactional import grails.util.Environment import grails.web.servlet.mvc.GrailsParameterMap import org.apache.http.HttpStatus +import org.grails.orm.hibernate.cfg.GrailsHibernateUtil import org.springframework.beans.factory.annotation.Value @Transactional @@ -63,7 +64,7 @@ class UserService { try { user.activated = false user.save(failOnError: true, flush: true) - Map resp = webService.post("${grailsApplication.config.alerts.url}/api/alerts/user/${user.id}/unsubscribe", [:]) + Map resp = webService.post("${grailsApplication.config.getProperty('alerts.url')}/api/alerts/user/${user.id}/unsubscribe", [:]) if (resp.statusCode != HttpStatus.SC_OK) { log.error("Alerts returned ${resp} when trying to disable the user's alerts. " + "The user has been disabled, but their alerts are still active.") @@ -81,6 +82,12 @@ class UserService { return user?.activated ?: false } + @Transactional(readOnly = true) + boolean isLocked(String email) { + def user = User.findByEmailOrUserName(email?.toLowerCase(), email?.toLowerCase()) + return user?.locked ?: false + } + @Transactional(readOnly = true) boolean isEmailRegistered(String email) { return User.findByEmailOrUserName(email?.toLowerCase(), email?.toLowerCase()) != null @@ -96,8 +103,9 @@ class UserService { } } + @Transactional def activateAccount(User user) { - Map resp = webService.post("${grailsApplication.config.alerts.url}/api/alerts/user/createAlerts", [:], [userId: user.id, email: user.email, firstName: user.firstName, lastName: user.lastName]) + Map resp = webService.post("${grailsApplication.config.getProperty('alerts.url')}/api/alerts/user/createAlerts", [:], [userId: user.id, email: user.email, firstName: user.firstName, lastName: user.lastName]) if (resp.statusCode == HttpStatus.SC_CREATED) { emailService.sendAccountActivationSuccess(user, resp.resp) } else if (resp.statusCode != HttpStatus.SC_OK) { @@ -108,7 +116,7 @@ class UserService { user.save(flush:true) } - BulkUserLoadResults bulkRegisterUsersFromFile(InputStream stream, Boolean firstRowContainsFieldNames, String primaryUsage, String emailSubject, String emailTitle, String emailBody) { + BulkUserLoadResults bulkRegisterUsersFromFile(InputStream stream, Boolean firstRowContainsFieldNames, String affiliation, String emailSubject, String emailTitle, String emailBody) { def results = new BulkUserLoadResults() @@ -142,11 +150,11 @@ class UserService { def userInstance = User.findByEmail(emailAddress) def isNewUser = true - def existingRoles = [] + def existingRoles = [] as Set if (userInstance) { isNewUser = false // keep track of their current roles - existingRoles.addAll(UserRole.findAllByUser(userInstance)*.role) + existingRoles.addAll(UserRole.findAllByUser(userInstance)*.role.collect { GrailsHibernateUtil.unwrapIfProxy(it) }) } else { userInstance = new User(email: emailAddress, userName: emailAddress, firstName: tokens[1], lastName: tokens[2]) userInstance.activated = true @@ -192,8 +200,7 @@ class UserService { // User Properties def userProps = [:] - userProps['primaryUserType'] = primaryUsage ?: 'Not specified' - userProps['secondaryUserType'] = 'Not specified' + userProps['affiliation'] = affiliation ?: 'disinclinedToAcquiesce' userProps['bulkCreatedOn'] = new Date().format("yyyy-MM-dd HH:mm:ss") setUserPropertiesFromMap(userInstance, userProps) @@ -333,7 +340,7 @@ class UserService { } } } else { - user = User.findByEmail(userId) + user = User.findByEmail(authService.getEmail()) } return user diff --git a/grails-app/views/admin/bulkUploadUsers.gsp b/grails-app/views/admin/bulkUploadUsers.gsp index 3e440e48..e6b2ef58 100644 --- a/grails-app/views/admin/bulkUploadUsers.gsp +++ b/grails-app/views/admin/bulkUploadUsers.gsp @@ -15,10 +15,10 @@ - + Bulk Load Users - ${title} | ${grailsApplication.config.skin.orgNameLong} + ${title} | ${grailsApplication.config.getProperty('skin.orgNameLong')} @@ -63,12 +63,20 @@

-
diff --git a/grails-app/views/admin/exportUsers.gsp b/grails-app/views/admin/exportUsers.gsp index ed054e55..c9bc9600 100644 --- a/grails-app/views/admin/exportUsers.gsp +++ b/grails-app/views/admin/exportUsers.gsp @@ -15,10 +15,10 @@ - + Export Users to CSV - ${title} | ${grailsApplication.config.skin.orgNameLong} + ${title} | ${grailsApplication.config.getProperty('skin.orgNameLong')} diff --git a/grails-app/views/admin/index.gsp b/grails-app/views/admin/index.gsp index ce722ae5..6b77dc5c 100644 --- a/grails-app/views/admin/index.gsp +++ b/grails-app/views/admin/index.gsp @@ -15,9 +15,9 @@ - + - User Administration | ${grailsApplication.config.skin.orgNameLong} + User Administration | ${grailsApplication.config.getProperty('skin.orgNameLong')} diff --git a/grails-app/views/admin/loadUsersResults.gsp b/grails-app/views/admin/loadUsersResults.gsp index 5c385eb8..d8487b60 100644 --- a/grails-app/views/admin/loadUsersResults.gsp +++ b/grails-app/views/admin/loadUsersResults.gsp @@ -15,10 +15,10 @@ - + - Bulk Load Users Results | ${grailsApplication.config.skin.orgNameLong} + Bulk Load Users Results | ${grailsApplication.config.getProperty('skin.orgNameLong')} ${title} diff --git a/grails-app/views/admin/resetPasswordForUser.gsp b/grails-app/views/admin/resetPasswordForUser.gsp index c9bb6e9c..b67eccc5 100644 --- a/grails-app/views/admin/resetPasswordForUser.gsp +++ b/grails-app/views/admin/resetPasswordForUser.gsp @@ -15,9 +15,9 @@ - + - Reset my password | ${grailsApplication.config.skin.orgNameLong} + Reset my password | ${grailsApplication.config.getProperty('skin.orgNameLong')} diff --git a/grails-app/views/admin/userPasswordResetSuccess.gsp b/grails-app/views/admin/userPasswordResetSuccess.gsp index 48719b71..1800b95e 100644 --- a/grails-app/views/admin/userPasswordResetSuccess.gsp +++ b/grails-app/views/admin/userPasswordResetSuccess.gsp @@ -15,9 +15,9 @@ - + - Please check your email | ${grailsApplication.config.skin.orgNameLong} + Please check your email | ${grailsApplication.config.getProperty('skin.orgNameLong')} diff --git a/grails-app/views/authorisedSystem/create.gsp b/grails-app/views/authorisedSystem/create.gsp index c46e6194..fa47a171 100644 --- a/grails-app/views/authorisedSystem/create.gsp +++ b/grails-app/views/authorisedSystem/create.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.create.label" args="[entityName]" /> diff --git a/grails-app/views/authorisedSystem/edit.gsp b/grails-app/views/authorisedSystem/edit.gsp index 899820c2..4dcbc604 100644 --- a/grails-app/views/authorisedSystem/edit.gsp +++ b/grails-app/views/authorisedSystem/edit.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.edit.label" args="[entityName]" /> diff --git a/grails-app/views/authorisedSystem/list.gsp b/grails-app/views/authorisedSystem/list.gsp index 91f291cb..658a1cd9 100644 --- a/grails-app/views/authorisedSystem/list.gsp +++ b/grails-app/views/authorisedSystem/list.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.list.label" args="[entityName]" /> diff --git a/grails-app/views/authorisedSystem/show.gsp b/grails-app/views/authorisedSystem/show.gsp index 08111aee..e1a61500 100644 --- a/grails-app/views/authorisedSystem/show.gsp +++ b/grails-app/views/authorisedSystem/show.gsp @@ -18,7 +18,7 @@ - + <g:message code="default.show.label" args="[entityName]" /> diff --git a/grails-app/views/error.gsp b/grails-app/views/error.gsp index 5f16683b..5d7fa3cd 100644 --- a/grails-app/views/error.gsp +++ b/grails-app/views/error.gsp @@ -2,7 +2,7 @@ Grails Runtime Exception - + diff --git a/grails-app/views/index.gsp b/grails-app/views/index.gsp index 3e0a01c5..c19c3771 100644 --- a/grails-app/views/index.gsp +++ b/grails-app/views/index.gsp @@ -15,9 +15,9 @@ - + - <g:message code="userdetails.index.accounts" args="[grailsApplication.config.skin.orgNameShort]" /> + <g:message code="userdetails.index.accounts" args="[grailsApplication.config.getProperty('skin.orgNameShort')]" /> @@ -33,7 +33,7 @@ -

+

  • @@ -43,7 +43,7 @@
    - +
    diff --git a/grails-app/views/notFound.gsp b/grails-app/views/notFound.gsp index 4a8c29f7..9b313f68 100644 --- a/grails-app/views/notFound.gsp +++ b/grails-app/views/notFound.gsp @@ -2,7 +2,7 @@ <g:message code="userdetails.not.found" /> - + diff --git a/grails-app/views/profile/flickrFail.gsp b/grails-app/views/profile/flickrFail.gsp index 0ebf1f55..e60f2d7c 100644 --- a/grails-app/views/profile/flickrFail.gsp +++ b/grails-app/views/profile/flickrFail.gsp @@ -15,16 +15,16 @@ - + - <g:message code="userdetails.my.profile" /> | ${grailsApplication.config.skin.orgNameLong} + <g:message code="userdetails.my.profile" /> | ${grailsApplication.config.getProperty('skin.orgNameLong')}

    - +

    diff --git a/grails-app/views/profile/flickrSuccess.gsp b/grails-app/views/profile/flickrSuccess.gsp index 94475642..a1ba1fae 100644 --- a/grails-app/views/profile/flickrSuccess.gsp +++ b/grails-app/views/profile/flickrSuccess.gsp @@ -15,9 +15,9 @@ - + - <g:message code="userdetails.my.profile" /> | ${grailsApplication.config.skin.orgNameLong} + <g:message code="userdetails.my.profile" /> | ${grailsApplication.config.getProperty('skin.orgNameLong')} diff --git a/grails-app/views/profile/inaturalistFail.gsp b/grails-app/views/profile/inaturalistFail.gsp index 1aa902d6..acb5e278 100644 --- a/grails-app/views/profile/inaturalistFail.gsp +++ b/grails-app/views/profile/inaturalistFail.gsp @@ -15,16 +15,16 @@ - + - <g:message code="userdetails.my.profile" /> | ${grailsApplication.config.skin.orgNameLong} + <g:message code="userdetails.my.profile" /> | ${grailsApplication.config.getProperty('skin.orgNameLong')}

    - +

    diff --git a/grails-app/views/profile/myprofile.gsp b/grails-app/views/profile/myprofile.gsp index ebab8f67..9a9af57b 100644 --- a/grails-app/views/profile/myprofile.gsp +++ b/grails-app/views/profile/myprofile.gsp @@ -17,134 +17,252 @@ - - - - <g:message code="userdetails.my.profile" /> | ${grailsApplication.config.skin.orgNameLong} + + + <g:message code="userdetails.my.profile" /> | ${grailsApplication.config.getProperty('skin.orgNameLong')} +
    +
    +
    +
    +

    +
    +
    +
    + +
    +
    +
    + +
    +
    +

    + + + +

    +

    +
    +
    +
    +
    + +
    +
    +

    + + + +

    +

    +
    +
    -
    -
    -

    -
    - -
  • - - - -
  • -
    -
- -

- -
-

- - - -

- + +

+
+
+ +
+
+

+ + + +

+

+
+
+
+
+ +
+
+

+ + + +

+

+
+
+
+
+ +
+
+

+ + + +

+

+
+
+
+
+ +
+
+

+ + + +

+

+
+
+
- + +
+
+
+ +
+
+

+ + + +

+

+
+
+
+
+ +
+
+

+ + + +

+

+
+
+
+
+ +
+
+

+ + + +

+

+
+
+
+
+ +
+
+

+ + + +

+

+
+
+
+
+ - -

+

+
+ +
+
+
+
+ +
+
+

${grailsApplication.config.getProperty('inaturalist.name')}

+ + + ${props.inaturalistUsername} + +
    +
  • View my iNaturalist observations in ${grailsApplication.config.getProperty('skin.orgNameShort')}
  • +
  • View my iNaturalist observations and my ${grailsApplication.config.skin.orgNameShort} Sightings in ${grailsApplication.config.skin.orgNameShort}
  • +
+ +
+ +

+ +

- + + + +
+
+
+
+
- -

- -

- - - - -
-
-
- -
-

${grailsApplication.config.inaturalist.name}

- - - ${props.inaturalistUsername} - -

- View my iNaturalist observations in ${grailsApplication.config.skin.orgNameShort}
- View my iNaturalist observations and my ${grailsApplication.config.skin.orgNameShort} Sightings in ${grailsApplication.config.skin.orgNameShort} -

- + +
+
+
+
+ +
+
+

+ + + + +

+ + + +

+ +
+ +

+ +

+ + + +
+
+
+
+
- -

- -

- - - - -
-
- diff --git a/grails-app/views/registration/accountActivated.gsp b/grails-app/views/registration/accountActivated.gsp index bb90391d..9c6f9807 100644 --- a/grails-app/views/registration/accountActivated.gsp +++ b/grails-app/views/registration/accountActivated.gsp @@ -15,9 +15,9 @@ - + - <g:message code="account.activated.account.created" /> | ${grailsApplication.config.skin.orgNameLong} + <g:message code="account.activated.account.created" /> | ${grailsApplication.config.getProperty('skin.orgNameLong')} @@ -29,9 +29,9 @@
- +
- +
diff --git a/grails-app/views/registration/accountActivatedSuccessful.gsp b/grails-app/views/registration/accountActivatedSuccessful.gsp index ff007bd2..3253a380 100644 --- a/grails-app/views/registration/accountActivatedSuccessful.gsp +++ b/grails-app/views/registration/accountActivatedSuccessful.gsp @@ -15,9 +15,9 @@ - + - <g:message code="account.activated.successful.title" /> | ${grailsApplication.config.skin.orgNameLong} + <g:message code="account.activated.successful.title" /> | ${grailsApplication.config.getProperty('skin.orgNameLong')} @@ -29,7 +29,7 @@
- +
diff --git a/grails-app/views/registration/accountCreated.gsp b/grails-app/views/registration/accountCreated.gsp index 984c4aba..d1a4a7e4 100644 --- a/grails-app/views/registration/accountCreated.gsp +++ b/grails-app/views/registration/accountCreated.gsp @@ -15,7 +15,7 @@ - + <g:message code="account.activated.created.title" /> @@ -29,11 +29,11 @@
-

+

-

+

diff --git a/grails-app/views/registration/accountDisabled.gsp b/grails-app/views/registration/accountDisabled.gsp index e97394d7..3b46abee 100644 --- a/grails-app/views/registration/accountDisabled.gsp +++ b/grails-app/views/registration/accountDisabled.gsp @@ -15,7 +15,7 @@ - + <g:message code="account.disabled.title" /> diff --git a/grails-app/views/registration/accountError.gsp b/grails-app/views/registration/accountError.gsp index 129a2f6d..a656bba5 100644 --- a/grails-app/views/registration/accountError.gsp +++ b/grails-app/views/registration/accountError.gsp @@ -15,9 +15,9 @@ - + - <g:message code="account.error.title" args="[grailsApplication.config.skin.orgNameShort]" /> + <g:message code="account.error.title" args="[grailsApplication.config.getProperty('skin.orgNameShort')]" /> @@ -26,7 +26,7 @@


- +

Error:

${msg}

diff --git a/grails-app/views/registration/authKeyExpired.gsp b/grails-app/views/registration/authKeyExpired.gsp index fea11b2c..04845294 100644 --- a/grails-app/views/registration/authKeyExpired.gsp +++ b/grails-app/views/registration/authKeyExpired.gsp @@ -15,7 +15,7 @@ - + <g:message code="auth.key.expired.title" /> @@ -31,7 +31,7 @@ Alternatively you can start the process again here.
- +

diff --git a/grails-app/views/registration/createAccount.gsp b/grails-app/views/registration/createAccount.gsp index c5f0803e..114ef7dd 100644 --- a/grails-app/views/registration/createAccount.gsp +++ b/grails-app/views/registration/createAccount.gsp @@ -15,7 +15,7 @@ - + @@ -27,7 +27,7 @@ ${title} - + @@ -48,12 +48,26 @@

- +

+ +
+
+
+

+

+ +

+ +

+
+
+
+
@@ -61,8 +75,7 @@

${params.email}.

- .
+ .
. @@ -90,28 +103,28 @@

- - - + + +

- +

- - + +

- . + .

- +

@@ -133,6 +146,14 @@ data-errormessage-value-missing="${message(code:'create.account.email.is.required')}" /> +
+ + +
@@ -210,8 +231,8 @@ - -
+ +

diff --git a/grails-app/views/registration/duplicateSubmit.gsp b/grails-app/views/registration/duplicateSubmit.gsp index 3be77437..7bbc3453 100644 --- a/grails-app/views/registration/duplicateSubmit.gsp +++ b/grails-app/views/registration/duplicateSubmit.gsp @@ -15,7 +15,7 @@ - + <g:message code="duplicate.submit.title" /> @@ -31,13 +31,13 @@
  • - +
  • If your new password doesn't work, please start the process again here.
  • - +
diff --git a/grails-app/views/registration/forgottenPassword.gsp b/grails-app/views/registration/forgottenPassword.gsp index fc764d52..b3467dd1 100644 --- a/grails-app/views/registration/forgottenPassword.gsp +++ b/grails-app/views/registration/forgottenPassword.gsp @@ -15,7 +15,7 @@ - + <g:message code="forgotten.password.title" /> diff --git a/grails-app/views/registration/passwordReset.gsp b/grails-app/views/registration/passwordReset.gsp index 7335bc38..abc5d4a6 100644 --- a/grails-app/views/registration/passwordReset.gsp +++ b/grails-app/views/registration/passwordReset.gsp @@ -15,7 +15,7 @@ - + <g:message code="password.reset.title" /> diff --git a/grails-app/views/registration/passwordResetSuccess.gsp b/grails-app/views/registration/passwordResetSuccess.gsp index 3ce39aac..c4e6b03c 100644 --- a/grails-app/views/registration/passwordResetSuccess.gsp +++ b/grails-app/views/registration/passwordResetSuccess.gsp @@ -15,7 +15,7 @@ - + <g:message code="password.reset.success.title" /> @@ -28,7 +28,7 @@

- +
diff --git a/grails-app/views/registration/startPasswordReset.gsp b/grails-app/views/registration/startPasswordReset.gsp index 45485eeb..b23bcddc 100644 --- a/grails-app/views/registration/startPasswordReset.gsp +++ b/grails-app/views/registration/startPasswordReset.gsp @@ -15,7 +15,7 @@ - + <g:message code="start.password.reset.title" /> diff --git a/grails-app/views/role/create.gsp b/grails-app/views/role/create.gsp index 2e0bcdb5..b88b0d7e 100644 --- a/grails-app/views/role/create.gsp +++ b/grails-app/views/role/create.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.create.label" args="[entityName]" /> diff --git a/grails-app/views/role/edit.gsp b/grails-app/views/role/edit.gsp index e5d63d41..9fd7ea7e 100644 --- a/grails-app/views/role/edit.gsp +++ b/grails-app/views/role/edit.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.edit.label" args="[entityName]" /> diff --git a/grails-app/views/role/list.gsp b/grails-app/views/role/list.gsp index e1b9407d..4680792a 100644 --- a/grails-app/views/role/list.gsp +++ b/grails-app/views/role/list.gsp @@ -18,7 +18,7 @@ - + <g:message code="default.list.label" args="[entityName]" /> diff --git a/grails-app/views/role/show.gsp b/grails-app/views/role/show.gsp index 3ca80fb4..08e1d68b 100644 --- a/grails-app/views/role/show.gsp +++ b/grails-app/views/role/show.gsp @@ -18,7 +18,7 @@ - + <g:message code="default.show.label" args="[entityName]" /> diff --git a/grails-app/views/user/create.gsp b/grails-app/views/user/create.gsp index 511123af..99420291 100644 --- a/grails-app/views/user/create.gsp +++ b/grails-app/views/user/create.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.create.label" args="[entityName]"/> diff --git a/grails-app/views/user/edit.gsp b/grails-app/views/user/edit.gsp index 5ea1ba02..c9703ca3 100644 --- a/grails-app/views/user/edit.gsp +++ b/grails-app/views/user/edit.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.edit.label" args="[entityName]"/> diff --git a/grails-app/views/user/list.gsp b/grails-app/views/user/list.gsp index 3a382016..b7ebe54d 100644 --- a/grails-app/views/user/list.gsp +++ b/grails-app/views/user/list.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.list.label" args="[entityName]"/> diff --git a/grails-app/views/user/show.gsp b/grails-app/views/user/show.gsp index cb1cfc4d..938fd1ab 100644 --- a/grails-app/views/user/show.gsp +++ b/grails-app/views/user/show.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.show.label" args="[entityName]"/> diff --git a/grails-app/views/userRole/create.gsp b/grails-app/views/userRole/create.gsp index 99c3ba08..da9344ff 100644 --- a/grails-app/views/userRole/create.gsp +++ b/grails-app/views/userRole/create.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.create.label" args="[entityName]" /> diff --git a/grails-app/views/userRole/edit.gsp b/grails-app/views/userRole/edit.gsp index 4351a4d2..59bd5929 100644 --- a/grails-app/views/userRole/edit.gsp +++ b/grails-app/views/userRole/edit.gsp @@ -17,7 +17,7 @@ - + <g:message code="default.edit.label" args="[entityName]" /> diff --git a/grails-app/views/userRole/list.gsp b/grails-app/views/userRole/list.gsp index e86f4444..4aa3a9a2 100644 --- a/grails-app/views/userRole/list.gsp +++ b/grails-app/views/userRole/list.gsp @@ -18,7 +18,7 @@ - + <g:message code="default.list.label" args="[entityName]" /> diff --git a/grails-app/views/userRole/show.gsp b/grails-app/views/userRole/show.gsp index 4617a5a5..0aa2b8c6 100644 --- a/grails-app/views/userRole/show.gsp +++ b/grails-app/views/userRole/show.gsp @@ -18,7 +18,7 @@ - + <g:message code="default.show.label" args="[entityName]" /> diff --git a/grails-wrapper.jar b/grails-wrapper.jar index bc85146c130e69264ce20e079987784615201b35..2cb677725e6d8d38c7a2ba03ca34b6703357dcb9 100644 GIT binary patch delta 4819 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 diff --git a/run.sh b/run.sh new file mode 100755 index 00000000..98eb5c43 --- /dev/null +++ b/run.sh @@ -0,0 +1,2 @@ +#!/bin/sh +java -Dlogging.config=/data/userdetails/config/logback.groovy -Dconsolelog=true -Xmx2g -Xms2g -jar /home/bea18c/dev/github/Atlas/userdetails/build/libs/userdetails-3.0.0-SNAPSHOT-exec.war diff --git a/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy b/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy index 9dbfb2a4..c97063a9 100644 --- a/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy +++ b/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy @@ -33,5 +33,6 @@ public @interface PreAuthorise { String requiredRole() default "ROLE_ADMIN" String redirectController() default "userdetails" String redirectAction() default "index" + String requiredScope() default "users:read" } diff --git a/src/main/resources/userdetails-ehcache.xml b/src/main/resources/userdetails-ehcache.xml index ecd261c5..a8f42042 100644 --- a/src/main/resources/userdetails-ehcache.xml +++ b/src/main/resources/userdetails-ehcache.xml @@ -12,330 +12,57 @@ ~ implied. See the License for the specific language governing ~ rights and limitations under the License. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + java.io.Serializable + java.io.Serializable + + 3600 + + + + 10000 + 100000 + + + + java.io.Serializable + java.io.Serializable + + 3600 + + + + 10000 + + + + java.io.Serializable + java.io.Serializable + + 3600 + + + + 100 + + + + java.io.Serializable + java.io.Serializable + + 1 + + + 10000 + + + \ No newline at end of file diff --git a/src/test/groovy/au/org/ala/userdetails/AuthorisedSystemServiceSpec.groovy b/src/test/groovy/au/org/ala/userdetails/AuthorisedSystemServiceSpec.groovy new file mode 100644 index 00000000..283d9d94 --- /dev/null +++ b/src/test/groovy/au/org/ala/userdetails/AuthorisedSystemServiceSpec.groovy @@ -0,0 +1,66 @@ +package au.org.ala.userdetails + +import au.org.ala.ws.security.JwtProperties +import grails.testing.gorm.DataTest +import grails.testing.services.ServiceUnitTest +import org.grails.spring.beans.factory.InstanceFactoryBean +import org.pac4j.core.config.Config +import org.pac4j.http.client.direct.DirectBearerAuthClient +import org.springframework.mock.web.MockHttpServletRequest +import org.springframework.mock.web.MockHttpServletResponse +import spock.lang.Specification + +class AuthorisedSystemServiceSpec extends Specification implements ServiceUnitTest, DataTest { + + void setupSpec() { + mockDomains(AuthorisedSystem) + } + + Closure doWithSpring() {{ -> + pac4jConfig(InstanceFactoryBean, Stub(Config), Config) + directBearerAuthClient(InstanceFactoryBean, Stub(DirectBearerAuthClient), DirectBearerAuthClient) + jwtProperties(JwtProperties) { + enabled = true + fallbackToLegacyBehaviour = true + } + }} + + def "test isAuthorisedRequest legacy"(String remoteAddr, boolean result) { + given: + service.jwtProperties.enabled = false + service.config = null + service.directBearerAuthClient = null + new AuthorisedSystem(host: '123.123.123.123', description: '').save(flush: true) + def request = new MockHttpServletRequest("GET", "/userdetails/getUserDetails") + request.remoteAddr = remoteAddr + request.remoteHost = 'example.org' + def response = new MockHttpServletResponse() + when: + def authorised = service.isAuthorisedRequest(request, response, null, null) + then: + authorised == result + + where: + remoteAddr | result + '123.123.123.124' | false + '123.123.123.123' | true + } + + def "test isAuthorisedRequest legacy fallback"(String remoteAddr, boolean result) { + given: + new AuthorisedSystem(host: '123.123.123.123', description: '').save(flush: true) + def request = new MockHttpServletRequest("GET", "/userdetails/getUserDetails") + request.remoteAddr = remoteAddr + request.remoteHost = 'example.org' + def response = new MockHttpServletResponse() + when: + def authorised = service.isAuthorisedRequest(request, response, null, null) + then: + authorised == result + + where: + remoteAddr | result + '123.123.123.124' | false + '123.123.123.123' | true + } +} diff --git a/src/test/groovy/au/org/ala/userdetails/RoleBasedInterceptorSpec.groovy b/src/test/groovy/au/org/ala/userdetails/RoleBasedInterceptorSpec.groovy index 3782aca1..543f773d 100644 --- a/src/test/groovy/au/org/ala/userdetails/RoleBasedInterceptorSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/RoleBasedInterceptorSpec.groovy @@ -58,7 +58,7 @@ class RoleBasedInterceptorSpec extends UserDetailsSpec implements InterceptorUni void "Unauthorized systems should not be able to access the user role web service"() { setup: - interceptor.authorisedSystemService.isAuthorisedSystem(_) >> false + interceptor.authorisedSystemService.isAuthorisedRequest(_,_,_,_) >> false response.format = 'json' when: diff --git a/src/test/groovy/au/org/ala/userdetails/UserDetailsControllerSpec.groovy b/src/test/groovy/au/org/ala/userdetails/UserDetailsControllerSpec.groovy index f47390c5..08d2d64a 100644 --- a/src/test/groovy/au/org/ala/userdetails/UserDetailsControllerSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/UserDetailsControllerSpec.groovy @@ -15,6 +15,7 @@ package au.org.ala.userdetails +import au.org.ala.ws.security.JwtProperties import grails.converters.JSON import grails.testing.gorm.DataTest import grails.testing.web.controllers.ControllerUnitTest @@ -30,6 +31,10 @@ import org.grails.web.util.GrailsApplicationAttributes class UserDetailsControllerSpec extends UserDetailsSpec implements ControllerUnitTest, DataTest { static doWithSpring = { + jwtProperties(JwtProperties) { + enabled = true + fallbackToLegacyBehaviour = true + } authorisedSystemService(UserDetailsSpec.Authorised) } diff --git a/src/test/groovy/au/org/ala/userdetails/UserDetailsWebServicesInterceptorSpec.groovy b/src/test/groovy/au/org/ala/userdetails/UserDetailsWebServicesInterceptorSpec.groovy index 4aa6c028..386423a9 100644 --- a/src/test/groovy/au/org/ala/userdetails/UserDetailsWebServicesInterceptorSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/UserDetailsWebServicesInterceptorSpec.groovy @@ -15,9 +15,14 @@ package au.org.ala.userdetails +import au.org.ala.ws.security.JwtAuthenticator +import au.org.ala.ws.security.JwtProperties import grails.testing.web.interceptor.InterceptorUnitTest import org.apache.http.HttpStatus +import org.grails.spring.beans.factory.InstanceFactoryBean import org.grails.web.util.GrailsApplicationAttributes +import org.pac4j.core.config.Config +import org.pac4j.http.client.direct.DirectBearerAuthClient import spock.lang.Specification /** @@ -27,12 +32,21 @@ import spock.lang.Specification //@TestMixin([InterceptorUnitTestMixin, GrailsUnitTestMixin]) class UserDetailsWebServicesInterceptorSpec extends Specification implements InterceptorUnitTest { - Closure doWithSpring(){{ -> - authorisedSystemService(UserDetailsSpec.UnAuthorised) - }} +// Closure doWithSpring(){{ -> +// authorisedSystemService(UserDetailsSpec.UnAuthorised) +// }} - def setup() { + def setup() { + defineBeans { + jwtProperties(JwtProperties) { + enabled = true + fallbackToLegacyBehaviour = true + } + config(InstanceFactoryBean, Stub(Config), Config) + directBearerAuthClient(InstanceFactoryBean, Stub(DirectBearerAuthClient), DirectBearerAuthClient) + authorisedSystemService(UserDetailsSpec.UnAuthorised) + } } def cleanup() { diff --git a/src/test/groovy/au/org/ala/userdetails/UserRoleControllerSpec.groovy b/src/test/groovy/au/org/ala/userdetails/UserRoleControllerSpec.groovy index 315ac7c2..7f14c8d5 100644 --- a/src/test/groovy/au/org/ala/userdetails/UserRoleControllerSpec.groovy +++ b/src/test/groovy/au/org/ala/userdetails/UserRoleControllerSpec.groovy @@ -15,10 +15,15 @@ package au.org.ala.userdetails +import au.org.ala.ws.security.JwtAuthenticator +import au.org.ala.ws.security.JwtProperties import grails.converters.JSON import grails.testing.gorm.DataTest import grails.testing.web.controllers.ControllerUnitTest import org.apache.http.HttpStatus +import org.grails.spring.beans.factory.InstanceFactoryBean +import org.pac4j.core.config.Config +import org.pac4j.http.client.direct.DirectBearerAuthClient /** * Specification for the UserRoleController @@ -28,10 +33,6 @@ import org.apache.http.HttpStatus //@Mock([AuthorisedSystemService, User, Role, UserRole, UserProperty]) class UserRoleControllerSpec extends UserDetailsSpec implements ControllerUnitTest, DataTest { - Closure doWithSpring(){{ -> - authorisedSystemService(UserDetailsSpec.UnAuthorised) - }} - private User user void setupSpec() { @@ -39,6 +40,15 @@ class UserRoleControllerSpec extends UserDetailsSpec implements ControllerUnitTe } void setup() { + defineBeans { + jwtProperties(JwtProperties) { + enabled = true + fallbackToLegacyBehaviour = true + } + config(InstanceFactoryBean, Stub(Config), Config) + directBearerAuthClient(InstanceFactoryBean, Stub(DirectBearerAuthClient), DirectBearerAuthClient) + authorisedSystemService(UserDetailsSpec.UnAuthorised) + } user = createUser() } From 4f9fe730805b33b23af63def60b6b335d87c79c3 Mon Sep 17 00:00:00 2001 From: Simon Bear Date: Tue, 26 Jul 2022 18:28:19 +1000 Subject: [PATCH 07/11] Use \ delimited scopes instead of : --- .../org/ala/userdetails/PropertyController.groovy | 4 ++-- .../ala/userdetails/UserDetailsController.groovy | 14 +++++++------- .../UserDetailsWebServicesInterceptor.groovy | 2 +- .../groovy/au/org/ala/auth/PreAuthorise.groovy | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy b/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy index b581fc37..867c3732 100644 --- a/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy @@ -85,11 +85,11 @@ class PropertyController extends BaseController { ] ) ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\read'])] ) @Path("getProperty") @Produces("application/json") - @PreAuthorise(requiredScope = 'users:read') + @PreAuthorise(requiredScope = 'users\\read') def getProperty() { String name = params.name Long alaId = params.long('alaId') diff --git a/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy b/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy index 936dd61e..c893cc23 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy @@ -76,7 +76,7 @@ class UserDetailsController { ] ) ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\read'])] ) @Path("search") @Produces("application/json") @@ -137,7 +137,7 @@ class UserDetailsController { ] ) ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\read'])] ) @Path("byRole") @Produces("application/json") @@ -244,7 +244,7 @@ class UserDetailsController { ] ) ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\read'])] ) @Path('getUserDetails') @Produces('application/json') @@ -298,7 +298,7 @@ class UserDetailsController { ] ) ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\read'])] ) @Deprecated @Path("getUserList") @@ -327,7 +327,7 @@ class UserDetailsController { ] ) ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\read'])] ) @Deprecated @Path("getUserListWithIds") @@ -356,7 +356,7 @@ class UserDetailsController { ] ) ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\read'])] ) @Deprecated @Path("getUserListFull") @@ -394,7 +394,7 @@ class UserDetailsController { ] ) ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:read'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\read'])] ) @Path("getUserDetailsFromIdList") @Consumes("application/json") diff --git a/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy b/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy index 2f56e097..6b9ca33e 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserDetailsWebServicesInterceptor.groovy @@ -30,7 +30,7 @@ class UserDetailsWebServicesInterceptor { } boolean before() { - if (!authorisedSystemService.isAuthorisedRequest(request, response, null, 'users:read')) { + if (!authorisedSystemService.isAuthorisedRequest(request, response, null, 'users\\read')) { log.warn("Denying access to $actionName from remote addr: ${request.remoteAddr}, remote host: ${request.remoteHost}") response.sendError(HttpStatus.SC_UNAUTHORIZED) diff --git a/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy b/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy index c97063a9..4fb2efad 100644 --- a/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy +++ b/src/main/groovy/au/org/ala/auth/PreAuthorise.groovy @@ -33,6 +33,6 @@ public @interface PreAuthorise { String requiredRole() default "ROLE_ADMIN" String redirectController() default "userdetails" String redirectAction() default "index" - String requiredScope() default "users:read" + String requiredScope() default "users\\read" } From 21366d3fdad7b6d6b181c1209ef87ca5e9f340db Mon Sep 17 00:00:00 2001 From: Simon Bear Date: Wed, 27 Jul 2022 15:17:58 +1000 Subject: [PATCH 08/11] Update ala-ws-security-plugin --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c68d575d..2818d21b 100644 --- a/build.gradle +++ b/build.gradle @@ -107,7 +107,7 @@ dependencies { implementation "org.grails.plugins:ala-bootstrap3:4.1.0" implementation "org.grails.plugins:ala-ws-plugin:3.1.0" - implementation "org.grails.plugins:ala-ws-security-plugin:4.1.0" + implementation "org.grails.plugins:ala-ws-security-plugin:4.1.1" implementation "org.grails.plugins:ala-auth:5.1.0" implementation "org.grails.plugins:ala-admin-plugin:2.3.0" From 5963e697b770abe9cb73cd9969e796c29ffe710e Mon Sep 17 00:00:00 2001 From: Simon Bear Date: Thu, 28 Jul 2022 13:48:23 +1000 Subject: [PATCH 09/11] - Update OpenAPI spec docs to include information on required scopes in description. - Update users:write to users\write --- .../org/ala/userdetails/PropertyController.groovy | 8 ++++---- .../ala/userdetails/UserDetailsController.groovy | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy b/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy index 867c3732..f3189a4e 100644 --- a/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/PropertyController.groovy @@ -50,7 +50,7 @@ class PropertyController extends BaseController { tags = "properties", summary = "Get Property", operationId = "getProperty", - description = "Get a property value for a user", + description = "Get a property value for a user. Required scopes: 'users\\read'.", parameters = [ @Parameter( name = "alaId", @@ -116,7 +116,7 @@ class PropertyController extends BaseController { tags = "properties", summary = "Save a Property", operationId = "saveProperty", - description = "Saves a property value for a user", + description = "Saves a property value for a user. Required scopes: 'users\\write'.", parameters = [ @Parameter( name = "alaId", @@ -162,11 +162,11 @@ class PropertyController extends BaseController { content = [@Content(mediaType = "text/plain")] ), ], - security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users:write'])] + security = [@SecurityRequirement(name = 'openIdConnect', scopes = ['users\\write'])] ) @Path("saveProperty") @Produces("application/json") - @PreAuthorise(requiredScope = 'users:write') + @PreAuthorise(requiredScope = 'users\\write') def saveProperty(){ String name = params.name; String value = params.value; diff --git a/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy b/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy index c893cc23..81f1338e 100644 --- a/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy +++ b/grails-app/controllers/au/org/ala/userdetails/UserDetailsController.groovy @@ -49,7 +49,7 @@ class UserDetailsController { tags = "users", summary = "Search users", operationId = "search", - description = "Search for users by username, email or display name.", + description = "Search for users by username, email or display name. Required scopes: 'users\\read'.", parameters = [ @Parameter( name = "q", @@ -104,7 +104,7 @@ class UserDetailsController { method = "GET", tags = "users", summary = "Get Users by Role", - description = "Get Users by Role", + description = "Get Users by Role. Required scopes: 'users\\read'.", parameters = [ @Parameter( name = "role", @@ -217,7 +217,7 @@ class UserDetailsController { method = "POST", tags = "users", summary = "Get User Details", - description = "Get User Details", + description = "Get User Details. Required scopes: 'users\\read'.", parameters = [ @Parameter( name = "userName", @@ -284,7 +284,7 @@ class UserDetailsController { method = "POST", tags = "users", summary = "Get User List", - description = "Get a list of all users", + description = "Get a list of all users. Required scopes: 'users\\read'.", deprecated = true, responses = [ @ApiResponse( @@ -313,7 +313,7 @@ class UserDetailsController { method = "POST", tags = "users", summary = "Get User List With Ids", - description = "Get a list of all users by their user id", + description = "Get a list of all users by their user id. Required scopes: 'users\\read'.", deprecated = true, responses = [ @ApiResponse( @@ -342,7 +342,7 @@ class UserDetailsController { method = "POST", tags = "users", summary = "Get User List With Ids", - description = "Get a list of all users by their user id", + description = "Get a list of all users by their user id. Required scopes: 'users\\read'.", deprecated = true, responses = [ @ApiResponse( @@ -373,7 +373,7 @@ class UserDetailsController { tags = "users", operationId = "getUserDetailsFromIdList", summary = "Get User Details by id list", - description = "Get a list of user details for a list of user ids", + description = "Get a list of user details for a list of user ids. Required scopes: 'users\\read'.", requestBody = @RequestBody( description = "The list of user ids to request and whether to include extended properties", required = true, From fee714cde0328a4b967814331c0a878d93d0eed2 Mon Sep 17 00:00:00 2001 From: Simon Bear Date: Thu, 28 Jul 2022 16:28:52 +1000 Subject: [PATCH 10/11] Add OAuth2 scopes definitions --- grails-app/conf/application.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml index 22a928e3..d099ba58 100644 --- a/grails-app/conf/application.yml +++ b/grails-app/conf/application.yml @@ -265,6 +265,12 @@ openapi: url: https://www.mozilla.org/en-US/MPL/1.1/ version: '@info.app.version@' cachetimeoutms: 0 + components: + security: + oauth2: + scopes: + users\read: Read or list any or all user records + users\write: Write to a user's record, eg update a user's attributes. supportEmail: support-local@ala.org.au homeUrl: https://www.ala.org.au From f8ac92da954bda8eac70c62188f80275f796e163 Mon Sep 17 00:00:00 2001 From: Simon Bear Date: Thu, 28 Jul 2022 16:30:06 +1000 Subject: [PATCH 11/11] Release 3.0.0 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 2818d21b..bfc083a7 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ plugins { id "com.gorylenko.gradle-git-properties" version "2.4.1" // TODO } -version "3.0.0-SNAPSHOT" +version "3.0.0" group "au.org.ala" apply plugin:"eclipse"